2
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 5 years have passed since last update.

vSphereで仮想マシンをPowerShellスクリプトからシャットダウンする

Posted at

PowerShellスクリプトを使い、vCenter配下の仮想マシンをスクリプトからシャットダウンします。
メンテナンス作業などで一斉に仮想マシンをシャットダウンする用途を想定していますので、シャットダウン対象外としたい仮想マシンを指定できるようにしてます。
また、最初からパワーオフ状態だった仮想マシンはテキストファイルに書き出すようにしています。


param (
  # vCenter Server IPアドレス
  $VCenter = "myserver",
  # vCenter Server ログインユーザ
  $User = "domain\username",
  # vCenter Server ログインパスワード
  $Pass = "password"
);

# シャットダウン対象外とするVM
$exclusionVMs = @("myvm1","myvm2")

# シャットダウン間隔を秒単位で指定
$sleepTime = 4

# パワーオフ状態のVMを記録するファイル
$PoweroffVMslist = "c:\poweroffvms.txt"

# 初期化処理
#-------------------------------------------------------------------------
function Do-Initialize()
#-------------------------------------------------------------------------
{
  if ( (Get-PSSnapin | Where-Object { $_.Name -eq "VMware.VimAutomation.Core"}) -eq $null )
  {
    Add-PSSnapin VMware.VimAutomation.Core
  }
}

#-------------------------------------------------------------------------
# Main Application Logic
#-------------------------------------------------------------------------
Do-Initialize

# vCenterへ接続
$Server = Connect-VIServer -Server $VCenter -User $User -Password $Pass

foreach ($getVM in Get-VM){

  if($getVM.PowerState -eq "PoweredOff"){
    $isPoweredOff = $true
    $getVM.Name | Out-File $PoweroffVMslist -Append
  }
  else {
    $isPoweredOff = $false
  }

  # 除外対象のVMかどうかを判定してフラグをセットする
  $isExclusionVm = $false
  foreach ($ex in $exclusionVMs){
    if($ex -eq $getVM.Name){
      $isExclusionVm = $true
      break
    }
  }

  # シャットダウン対象外のVMと最初からパワーオフ状態だったVMを除き、シャットダウンする
  if((-not $isExclusionVm) -and (-not $isPoweredOff)){
    Write-Host $getVM.Name
    Shutdown-VMGuest -VM $getVM -Confirm:$false
    Start-Sleep -s $sleepTime
  }
}

# vCenterから切断
Disconnect-VIServer -Server $Server -Confirm:$false
2
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
2
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?