#自分のメモ書き用です
#Power Cmdlet Reference
https://code.vmware.com/docs/11794/cmdlet-reference
#使用した VMware PowerCLI
VMware-PowerCLI-6.5.0-4624819.exe
参考
https://www.powershellgallery.com/packages/VMware.PowerCLI/6.5.1.5377412
https://code.vmware.com/web/tool/6.5.1/vmware-powercli
Install-Module -Name VMware.PowerCLI -RequiredVersion 6.5.1.5377412
#vSphereに接続する
Connect-VIServer -Server vcsa.vsphere.local -Protocol https -User 'Administrator@vsphere.local' -Password 'password'
VMware PowerCLI User's Guide P33
#VMリスト
Get-VM
電源状態を取得
Get-VM -Name "clone-n2pc11[0-9]" | foreach { echo $_.Powerstate }
もしくは
Get-VM "clone-n2pc11[0-9]"
#リソースプールの電源状態をファイルに記録
$respool = Get-ResourcePool ResourcePool
Get-VM -Location $respool | Select-Object Name, PowerState > myVMProperties.txt
#リソースプール内のVMの配列
$vmList = Get-VM -Location $respool
$vmList[0].Name
$vmList.Count
#OS情報
Get-VMGuest VM | fc
#リソースプール内のVMのIPをリスト
$respool = Get-ResourcePool resourcepool-name
$vmlist = Get-VM -Location $respool
$guestlist = Get-VMGuest $vmlist
for ($i=0; $i -lt $guestlist.count ; $i++)
{ echo $guestlist[$i].Ipaddress[0] }
#リソースプール内のVMをすべてサスペンド
Horizonにプールされたマシンの場合は事前にプールをDisableにしておく
$respool = Get-ResourcePool satatest
Get-VM -Location $respool | Suspend-VM -RunAsync:1 -Confirm:0
#VMをスタート
Get-VM VM | Start-VM
Start-VM $vm
まとめての場合:
Get-VM -Name clone[0-9][0-9] | foreach { Start-VM -VM $_ -RunAsync:1 -Confirm:0 }
#ソフトOFF
Stop-VMGuest VM
Get-VM -Name "clone-n2pc4[0-9][0-9]" | foreach {Stop-VMGuest -VM $_ -Confirm:0}
#電源OFF
Stop-VM VM
Get-VM -name "clone-n2pc4[0-9][0-9]" | foreach {Stop-VM -VM $_ -Confirm:0}
#リソースプール内のVMを電源OFF
$respool = Get-ResourcePool ResourcePool
Get-VM -Location $respool | Stop-VM
#ソフトリスタート
ReStart-VMGuest VM -Confirm:0
#強制リスタート
ReStart-VM VM
#特定の連番以上の名前のVMソフトOFF
stop-vmguest clone-n2pc99* -Confirm:0
#801~1000までをソフトOFF
for( $i=801; $i -lt 1001; $i++){
$vm1 = "clone-n2pc" + $i
$vm2 = Get-VM $vm1
if( $vm2.PowerState -eq "PoweredOn" ){
echo $vm2.Name
Stop-VMGuest $vm2 -Confirm:0
}
}
#1~800までの中で電源ON/OFFの数を数える
$vmOn = @()
$vmOff = @()
for( $i=1; $i -lt 801; $i++){
$vm1 = "clone-n2pc" + $i
$vm2 = Get-VM $vm1
if( $vm2.PowerState -eq "PoweredOn" ){
echo $vm2.Name
$vmOn += $vm2
}else{
echo $vm2 " OFF"
$vmOff += $vm2
}
}
echo $vmOn.count
echo $vmOff.count
#1~800まで強制リスタート
for( $i=1; $i -lt 801; $i++){
$vm1 = "clone-n2pc" + $i
echo $vm1
ReStart-VM $vm1 -Confirm:0
}
#他のホストにvMotion
Get-VM -Name clone118 | Move-vm -destination HostB.vsphere.local -RunAsync:1
#以下は参考
#1~200までをシャットダウン
for( $i=1; $i -lt 201; $i++){ Get-View -ViewType VirtualMachine -Filter @{"Name" = "clone-n2pc"+$i } | foreach{$_.ShutdownGuest()} }
または
for ($i=1; $i -lt 201; $i++){ $vmname = "clone-n2pc" + $i; Stop-VMGuest $vmname }
#401~1000までをシャットダウン
for( $i=401; $i -lt 1001; $i++){ Get-View -ViewType VirtualMachine -Filter @{"Name" = "clone-n2pc"+$i } | foreach{$_.ShutdownGuest()} }
#401~1000までをシャットダウン
for( $i=401; $i -lt 1001; $i++){ $vmname = "clone-n2pc" + $i; Stop-VM $vmname }
#1~1000の中で電源ONのものをシャットダウン
for($i=1; $i -lt 1001; $i++){
$filter = @{"Runtime.PowerState" ="poweredOn"; "Name" = "clone-n2pc" + $i}
Get-View -ViewType "VirtualMachine" -Filter $filter | foreach{$_.ShutdownGuest()}
}
for($i=1; $i -lt 1001; $i++){Get-View -ViewType "VirtualMachine" -Filter @{"Runtime.PowerState" ="poweredOn"; "Name" = "clone-n2pc" + $i} | foreach{$_.ShutdownGuest()}}
#401~1000までの電源ONを強制OFF
for($i=401; $i -lt 1001; $i++){Get-View -ViewType "VirtualMachine" -Filter @{"Runtime.PowerState" ="poweredOn"; "Name" = "clone-n2pc" + $i} | foreach{$_.StopGuest()}}
#401~1001までの中でPowerONは強制OFF うまくいくが、時間かかる
for($i=401; $i -lt 1001; $i++){ $var_name = "clone-n2pc" +$i ; echo $var_name ; $var_obj = Get-VM $var_name ; if($var_obj.PowerState -eq "PoweredOn"){ echo $var_name ; Stop-VM $var_name}}
#登録外し
Remove-vm VM
remove-vm "clone-n2pc99[1-9]" -Confirm:0
Diskからも削除
Remove-VM -DeletePermanently -VM vmName[0-4]
#VMの移動
Get-VM -Name VM -Location Host01 | Move-VM -Destination Host02
#ESXiホストをリスト
Get-VMHost
#ESXiをリブート
$vmhostView = Get-VMHost -Name Host | Get-View
$vmhostView.RebootHost()
#ESXiホストの追加
add-VMHost -Name Host -Location (Get-Datacenter DC) -User root -Password pass
#リソースプール上のVMリスト
Get-Resourcepool Resourcename | Get-VM
#VMを配列に入れる
$vmList = @()
$vmList += Get-VM VM
#リソースプールのVMを配列に格納
$vmList = Get-Resourcepool Resourcename | Get-VM
echo $vmList.count
echo $vmList
#上記リソースプール内の電源ONのリスト
for( $i=0; $i -lt $vmList.count; $i++){
if( $vmList[$i].PowerState -eq "PoweredOn"){
$onList += $vmList[$i]
}
}
#Filter を使って特定のVMのシャットダウン しかしフィルターは時間がかかる
$filter = @{"Runtime.PowerState" ="poweredOn"; "Config.GuestFullName" = "Windows XP"}
Get-View -ViewType "VirtualMachine" -Filter $filter | foreach{$_.ShutdownGuest()}
Get-View -ViewType VirtualMachine -Filter @{"Name" = "Win-GPU"} | foreach{$_.ShutdownGuest()}
Get-View -ViewType VirtualMachine -Filter @{"Name" = "LC1"} | foreach{$_.ShutdownGuest()}
#VM2を含むVMをリスト
$vm2 = Get-View -ViewType VirtualMachine -Filter @{"Name" = "VM2"}
#VMを別窓のリストから選択
$VM = Get-VM | Out-GridView -Title "VM List" -PassThru
$VM = Get-VM | Select Name, VMHost | Out-GridView -Title "VM List" -PassThru
#VMを動かすとき
start-vm hci-fio-vsanDatastore-[0-3]-[1-8] -confirm:0
#参考URL
https://code.vmware.com/web/tool/12.0.0/vmware-powercli
http://kt-hiro.hatenablog.com/entry/20121019/1350631006
https://www.vmware.com/support/pubs/
DL https://my.vmware.com/jp/web/vmware/details?downloadGroup=VS-CLI-670&productId=742
Doc https://www.vmware.com/support/pubs/ps_pubs.html
Doc https://www.vmware.com/support/developer/PowerCLI/index.html
DL Doc https://code.vmware.com/web/tool/12.0.0/vmware-powercli