1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

vSphere を PowerShell でコントロール

Last updated at Posted at 2020-04-25

#自分のメモ書き用です

#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

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?