NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

VMware PowerCLI サンプルスクリプト

CSV ファイルを読み込んで、仮想マシンを制御するスクリプトの例です。
本例では、仮想マシン名を記述した CSV ファイル(vms.csv)を以下のパスに配置しています。

C:\scripts\vms.csv

CSV ファイルの内容は、以下のとおりです。
f:id:FriendsNow:20150219215344p:plain

仮想マシンを起動するスクリプト

$vCenterIP = "192.168.1.10"
$User = "Administrator"
$Password = "Password"
$VMs = Import-CSV C:\scripts\vms.csv
 
#Import the PowerCLI module
Add-PSSnapin VMware.VimAutomation.Core
 
#Connect to the server
$vi = Connect-VIServer -Server $vCenterIP -User $User -Password $Password

#Power on the VMs
foreach ($vm in $VMs){
      Get-VM $vm.VMName | where{$_.PowerState -eq "PoweredOff"} | Start-VM -Runasync -Confirm:$false | Out-Null
}

#Disconnect to the server
Disconnect-VIServer -Server $vCenterIP -Confirm:$False 

仮想マシンを停止するスクリプト

$vCenterIP = "192.168.1.10"
$User = "Administrator"
$Password = "Password"
$VMs = Import-CSV C:\scripts\vms.csv
 
#Import the PowerCLI module
Add-PSSnapin VMware.VimAutomation.Core
 
#Connect to the server
$vi = Connect-VIServer -Server $vCenterIP -User $User -Password $Password

#Power off the VMs
foreach ($vm in $VMs){
      Get-VM $vm.VMName | where{$_.PowerState -eq "PoweredOn"} | Shutdown-VMguest -Confirm:$false | Out-Null
}

#Disconnect to the server
Disconnect-VIServer -Server $vCenterIP -Confirm:$False 

仮想マシンのスナップショットを取得するスクリプト

$vCenterIP = "192.168.1.10"
$User = "Administrator"
$Password = "Password"
$Date = Get-Date -format yyyyMMddHHmm
$VMs = Import-CSV C:\scripts\vms.csv

#Import the PowerCLI module
Add-PSSnapin VMware.VimAutomation.Core
 
#Connect to the server
$vi = Connect-VIServer -Server $vCenterIP -User $User -

#Create the Snapshot
foreach ($vm in $VMs){
	  New-Snapshot -Name $Date -VM $vm.VMName -Descript
}

#Disconnect to the server
Disconnect-VIServer -Server $vCenterIP -Confirm:$False 

仮想マシンのスナップショットを削除するスクリプト

$vCenterIP = "192.168.1.10"
$User = "Administrator"
$Password = "Password"
$Date = Get-Date -format yyyyMMddHHmm
$VMs = Import-CSV C:\scripts\vms.csv

#Import the PowerCLI module
Add-PSSnapin VMware.VimAutomation.Core
 
#Connect to the server
$vi = Connect-VIServer -Server $vCenterIP -User $User -Password $Password

#Remove the Snapshot
foreach ($vm in $VMs){
      Get-Snapshot -VM $vm.VMName | Remove-Snapshot -RemoveChildren -Confirm:$False
}

#Disconnect to the server
Disconnect-VIServer -Server $vCenterIP -Confirm:$False 

参考書籍

以上