Скрипты (VMware): различия между версиями
Перейти к навигации
Перейти к поиску
Onix (обсуждение | вклад) мНет описания правки |
Onix (обсуждение | вклад) мНет описания правки |
||
| (не показано 6 промежуточных версий этого же участника) | |||
| Строка 21: | Строка 21: | ||
$Result</pre> | $Result</pre> | ||
'''Определение времени загрузки операционной системы и сортировка в порядке увеличения времени uptime''' | '''Определение времени загрузки операционной системы и сортировка в порядке увеличения времени uptime''' | ||
<pre>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 | | <pre>$vms = Get-VM | where {($_.powerState -eq "PoweredOn") -and ($_.name –notlike “*vCLS*”)} | ||
$stat = 'sys.osuptime.latest' | |||
$now = Get-Date | |||
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 | ft -a</pre> | |||
'''Вывод в CSV-файл списка включенных виртуальных машин с Windows и не равной определенной версии Vmware Tools''' | |||
<pre>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 </pre> | |||
'''Получение списка датасторов, у которых произошла переподписка (OverProvisioned)''' | |||
<pre> | |||
$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 | |||
</pre> | |||
'''Вывод событий за последние сутки о перезагрузках виртуальных машин из-за недоступности хоста''' | |||
<pre> | <pre> | ||
$Date = Get-Date | |||
Get- | $HAVMrestartold =1 | ||
Get-VIEvent -maxsamples 100000 -Start ($Date).AddDays(-$HAVMrestartold) -type warning | Where {$_.FullFormattedMessage -match "restarted"} |select CreatedTime,FullFormattedMessage |sort CreatedTime -Descending | |||
</pre> | </pre> | ||
[[Category:VMware]] | [[Category:VMware]] | ||
[[Category:Powershell]] | |||
Текущая версия от 16:50, 27 ноября 2025
Узнаем статус включения 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
$vms = Get-VM | where {($_.powerState -eq "PoweredOn") -and ($_.name –notlike “*vCLS*”)}
$stat = 'sys.osuptime.latest'
$now = Get-Date
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 | ft -a
Вывод в 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