はじめに
指定した仮想マシンを起動するスクリプトです。PowerCLIを使用してvCenterサーバに接続して仮想マシンを起動します。
環境
OS:Windows10
.Net Framework:4.7
PowerShellのバージョン:5.1.17763.1007
ソースコード
VMStart.ps1
#######################################################################################
# 概要:仮想マシンを起動します。
# 作成者:ITStudy
# 作成日:2020/06/18
# 必要なファイル:VMShutdown.ps1(このファイルです)
# ServersList.csv(対象サーバを記載したファイルです)
# SecurePassword.txt(暗号化したパスワードファイルです)
#######################################################################################
$CurrentDir = $PSScriptRoot
$vCenterServer = "xxx.xxx.xxx.xxx" #ホスト名 or IP
$ServersList = "ServersList.csv"
$SecurePassword = "SecurePassword.txt"
$Report = "Report-$(Get-Date -f yyyyMMdd).csv"
$UserName = "administrator@vsphere.local"
$Pass = Get-Content (Join-Path $CurrentDir $SecurePassword) | ConvertTo-SecureString
$Cred = New-Object System.management.Automation.PsCredential($UserName, $Pass)
$Result = @()
$ErrorActionPreference = "SilentlyContinue"
try{
#vCenterサーバに接続
Connect-VIServer -Server $vCenterServer -Credential $Cred -Force
Import-Csv (Join-Path $CurrentDir $ServersList) -Encoding Default | %{
#エラー配列を初期化
$error.Clear()
#ホスト名の取得(HostName)
$hn = $_.HostName
#仮想マシンの起動
$VMStatus = start-VM $hn
$Result += [pscustomobject]@{"HostName"=$hn; "Start Execution Time"=(Get-Date).ToString("yyyy/MM/dd HH:mm:ss"); "ErrorMessage"=$error[0]}
#進行状態を表示
Write-Host($hn + "を処理中です。")
#待ち時間(10秒)
Start-Sleep -s 10
}
#結果表示
$Result | Format-Table -AutoSize -Wrap
#レポート出力
$Result | Export-Csv -NoTypeInformation (Join-Path $CurrentDir $Report) -Encoding Default
}Catch{
$Error
}finally{
#vCenterサーバの切断
Disconnect-VIServer -Server $vCenterServer -Confirm:$false
}
ServersList.csv
対象サーバのホスト名、もしくはIPアドレスを入力します。ヘッダーの「HostName」は削除しないで下さい。
HostName
ewindows2003
ewindows2008
ewindows2012
ewindows2016
ewindows2019
SecurePassword.txt
対象サーバのホスト名、IPアドレス、ユーザー名、暗号化したパスワードが保存されています。このファイルは事前に作成しておいて下さい。作成方法は「パスワードの暗号化・復号化」の「Get-Credentialを使ったやり方」を参照して下さい。
01000000d08c9ddf0115d1118c7a00c04fc297eb01000000b9f7ced8a7594b4d86b54083ef26ffa1000000000200000000001066000000010000200000002c726ca0a81e32eeaa8ba7bee3e5fe6e49df20c8c40e758fe94d96a7714adbb8000000000e80000000020000200000009e9778236aa96823e5e60335e9e56f21b22e6774eefc750f2536d65f25376707200000003343ef6d2684271d8910655b1737b18f0bcb937ee5eda370ddbbe27d357fc1dd40000000262c6f8706f77644e9fe894e13c0ca2d79986567d21955faf292d561b0d6422c282b5aa05f8409fa00887556af4bb6e0c076c86d9a930f545189de9027a7ff0c
結果
Report-YYYYMMDD.csv
仮想マシンを起動した結果が表示されます。
HostName PowerState Start DateTime ErrorMessage
-------- ---------- -------------- ------------
ewindows2003 PoweredOn 2020/06/18 10:24:44
ewindows2008 PoweredOn 2020/06/18 10:24:51
ewindows2012 PoweredOn 2020/06/18 10:24:58
ewindows2016 PoweredOn 2020/06/18 10:25:05
ewindows2019 PoweredOn 2020/06/18 10:25:13
もし何かしらのエラーが発生した場合は、「ErrorMessage」に内容が表示されます。必要なファイルがない、vCenterサーバにアクセスできない、サーバの認証が通らない、 暗号化パスワードを復号化できないなどを想定してテストしています。