отключение виртуальных машин скриптом

FlipFlop

Случайный прохожий
Добрый вечер коллеги! Есть ли способ отключить около 50 виртуальных машин скриптом через powershell?
 
Вот нашел какие-то но еще не проверял. Вроде все понятно :unsure:
выключение
Код:
########## Change here for your infrastructure
# vCenter Server Name or Ip
$vCenter="vc.mydomain.local"
# vCenter User Name
$vCenterUser="user"
# vCenter User Password
$vCenterUserPassword="yourpassword"
##############################################
Add-PSSnapin VMware.VimAutomation.Core
Connect-viserver $vCenter -user $vCenterUser -password $vCenterUserPassword -WarningAction 0
$vms = Get-Folder "Folder1" | get-vm *
$vms += Get-Folder "Folder2" | get-vm *
$vms += Get-Folder "Folder3" | get-vm *
$vmArray = @()
foreach ($vm in $vms) {
if($vm.PowerState -ne "PoweredOn"){
  $vm | Start-Vm
  $vmArray += $vm.Id
 }
}
$vmArray | Export-Clixml "C:\Temp\VMs_list.xml"


Включение
Код:
########## Change here for your infrastructure
# vCenter Server Name or Ip
$vCenter="vc.mydomain.local"
# vCenter User Name
$vCenterUser="user"
# vCenter User Password
$vCenterUserPassword="yourpassword"
##############################################
Add-PSSnapin VMware.VimAutomation.Core
Connect-viserver $vCenter -user $vCenterUser -password $vCenterUserPassword -WarningAction 0
$vmArray = Import-Clixml "C:\Temp\VMs_list.xml"
$vms = Get-Folder "Folder1" | get-vm *
$vms += Get-Folder "Folder2" | get-vm *
$vms += Get-Folder "Folder3" | get-vm *
foreach ($vm in $vms) {
 if($vm.PowerState -eq "PoweredOn" -And $vmArray -match $vm.Id){
  $vmTools = Stop-VMGuest -vm $vm.Name -Confirm:$false
  if($vmTools -eq $null){
   Stop-VM -vm $vm.Name -Confirm:$false
  }
 }
}
 
а в чем их запускать? И что такое Folder1 -3 по тексту скрипта
 
Таких скриптов масса в интернете, погуглите - море найдете
Вот к примеру здесь
Код:
<#

Для работы необходим vSphere PowerCLI

#>
Import-Module "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1"
Connect-VIServer -Server "hq-vcsa"
New-VIProperty -Name ToolsVersion -ObjectType VirtualMachine -ValueFromExtensionProperty "Config.tools.ToolsVersion" -Force
$esxi = "192.168.1.10", "192.168.1.11", "192.168.1.12", "192.168.1.30"
Foreach ($esHost in $esxi) {
          $vmNs = Get-VM | Select-Object -Property * | ? {($_.Host -like $esHost) -and ($_.PowerState -like "PoweredOn") -and ($_.ToolsVersion -eq 0)}
          Foreach ($vmN in $vmNs) {
          Stop-VM $vmN.Name -Confirm:$false
          sleep 5 #На всякий пожарный
     }
     $vmIs = Get-VM | Select-Object -Property * | ? {($_.Host -like $esHost) -and ($_.PowerState -like "PoweredOn") -and ($_.ToolsVersion -ne 0)}
     Foreach ($vmI in $vmIs.Name) {
          Shutdown-VMGuest -VM $vmI -Confirm:$false
          sleep 30 #Возможно, стоит поставить чуть больше или сделать проверку на доступность VM
     }
     if ((Get-VM | ? {$_.Host -like $esHost -and $_.PowerState -like "PoweredOn"}).Count -eq 0) {
          Stop-VMHost $esHost -Force -Confirm:$false
     }
}
Disconnect-VIServer -Confirm:$false
 
спасибо попробую но не думаю что заработает. Можете еще каких нибудь скриптов для отключения ESXi накидать ?
 
так вы виртуальные машины хотите скриптом отключать или ESXi ??:rolleyes:
что бы не было путаницы. Мне надо сначала выключить скриптом виртуальные машины затем выключить скриптом гипревизоры, поэтому оба скрипта пригодятся. Поделитесь плиз у кого что есть...
 
Назад
Верх