Скрипты (VMware)
Узнаем статус включения ipv6 на хостах ESXi
Get-VMHost | Select Name,@{N='IPv6 Enabled';E={$_.ExtensionData.Config.Network.ipV6Enabled}}
Назначение прав доступа на виртуальные машины с определенным шаблоном в имени
Get-VM -name "SL*" | where {$_.powerState -eq "PoweredOn"} | New-VIPermission -Role "Read-only + Console + Reboot" -Principal "DOMAIN\vasya"
На каких включенных виртуальных машинах настроен USB-контроллер
Get-VM | where {$_.PowerState -eq 'PoweredOn'}| ?{$_.ExtensionData.Config.Hardware.Device.DeviceInfo.Label -match "USB"}
На каких включенных виртуальных машинах не добавлен CD-ROM
$vmList = Get-VM | where {$_.PowerState -eq 'PoweredOn'}
foreach ($vm in $vmList) {
$cdStatus = Get-CDDrive -VM $vm
if ($cdStatus -eq $null) {
Write-Host "$($vm.Name) - CD-ROM is not attached"}}
Определение версии VMware Tools на хостах ESXi
$Result = @()
foreach ($ViHost in (Get-VMhost)) {
$esxcli = $ViHost | Get-esxcli -V2
$ToolsVersion = ($esxcli.software.component.get.Invoke() | Where-Object {$_.name -eq "VMware-VM-Tools"}).Version
$Result += [PSCustomObject] @{
HostName = $ViHost.Name;
ToolsVersion = $ToolsVersion}}
$Result
Определение времени загрузки операционной системы и сортировка в порядке увеличения времени uptime
Get-Stat -Entity $vms -Stat $stat -Realtime -MaxSamples 1| Select @{N='VM';E={$_.Entity.Name}}, @{N='LastOSBoot';E={$now.AddSeconds(- $_.Value)}}, @{N='UptimeDays';E={[math]::Floor($_.Value/(24*60*60))}} | Sort-Object UptimeDays | Select VM, LastOSBoot, UptimeDays
Вывод в CSV-файл списка включенных виртуальных машин с Windows и не равной определенной версии Vmware Tools
Get-VM |where {($_.PowerState -eq "PoweredOn") -and ($_.Guest -like "*Windows*") -and ($_.Guest.ToolsVersion -ne "12.3.5")} | Select-Object -Property Name,@{Name='ToolsVersion';Expression={$_.Guest.ToolsVersion}} | export-csv -Encoding UTF8 -Path C:\Temp\vmware_tools_ver.csv -NoClobber -UseCulture
Получение списка датасторов, у которых произошла переподписка (OverProvisioned)
$report = Get-Datastore | ForEach-Object {
$datastore = $_
$capacityGB = [math]::Round($datastore.CapacityGB, 2)
# Считаем Provisioned Space
$provisionedGB = Get-VM -Datastore $datastore | Get-HardDisk |
Where-Object { $_.FileName.Split(']')[0].TrimStart('[') -eq $datastore.Name } |
Measure-Object -Property CapacityGB -Sum |
Select-Object -ExpandProperty Sum
# Если дисков нет, устанавливаем 0
$provisionedGB = if ($provisionedGB) { [double]$provisionedGB } else { 0.0 }
$provisionedGB = [math]::Round($provisionedGB, 2)
# Формируем отчет
if ($provisionedGB -gt $capacityGB) {
[PSCustomObject]@{
Datastore = $datastore.Name
CapacityGB = $capacityGB
ProvisionedGB = $provisionedGB
OverProvisionedByGB = [math]::Round(($provisionedGB - $capacityGB), 2)
}
}
}
$report | Format-Table -AutoSize
'Вывод событий за последние сутки о перезагрузках виртуальных машин из-за недоступности хоста
$Date = Get-Date
$HAVMrestartold =1
Get-VIEvent -maxsamples 100000 -Start ($Date).AddDays(-$HAVMrestartold) -type warning | Where {$_.FullFormattedMessage -match "restarted"} |select CreatedTime,FullFormattedMessage |sort CreatedTime -Descending