■仮想化‎ > ‎

VMware vSphere PowerCLI

vSphere CLIと同じような感じでコマンドラインで操作ができます。
大きく違うのは、PowerShellと組み合わせられるのと
vCenterより出来るオペレーションは全て出来るとか出来ないとか。
使い方を誤れば危ないですが、非常に便利なツールです。

■PowerCLI DownLoad
https://my.vmware.com/jp/web/vmware/details?productId=28&downloadGroup=VSP510-PCLI-510

■インストール要件
当然、PowerShellが必要。後.NET Framework 2.0
インストール後に、デスクトップにアイコンが出来るのでそちらより起動します。
初回に限り、セキュリティの関係でエラーがでます。

PowerCLI> Set-ExecutionPolicy RemoteSigned
ポリシー変更を確認されるので[y]を入力して変更してください。

■コマンド
別に、コマンドは大文字・小文字を気にしなくても良いです。
コマンドレットだけでなく、オプションも多いのでリファレンスを見てもらった方が早いかと・・・

・vCenterとの接続
PowerCLI> Connect-VIServer -User [ユーザ名] -Password [パスワード] [vCenterのIPアドレス]
・vCenterとの切断
PowerCLI> Disconnect-VIServer –Server [vCenterのIPアドレス] -Confirm:$False
 -Confirm:$Falseを付けると切断する際の確認が無効になります。
・仮想マシンの情報を取得
PowerCLI> Get-VM
・特定の仮想マシン情報を取得
PowerCLI> Get-VM -Name [vmname] | Select-Object Name, PowerState, NumCpu, MemoryMB
・ホストの情報を取得
PowerCLI> Get-VMHost
・取得から1ヶ月以上経過した古いスナップショットを削除する
PowerCLI> Get-VM | Get-Snapshot | Where-Object { $_.Created -lt (Get-Date).AddMonths(-1) } | Remove-Snapshot
・パフォーマンスデータをCSVに書き出す(リアルタイム)
PowerCLI> Get-Stat -Realtime -Entity (Get-VM [vmname]) | Export-csv -encoding unicode [filename]
 特定の情報や期間とかも指定できるのでリファレンス参照をお勧めします。
 自分の環境では、CPU/MEMのデータを30分間隔で前日分だけを取りたかったのですが
 Start/Finishがうまく反応しなかったです。
 しかたないので、1週間分のデータを保持されてたため前日分だけを抜き出して対応しています・・・

■スクリプトによる自動化
自動化したい処理を書いたPowerCLI用.ps1を作成。
後は、タスク実行するなり直接実行するなり好きにすればOK。

sample.ps1
---
#PowerCLIのコマンドレットをインポート
#方法は2つでどちらかを最初に記述しておけばPoweCLIのコマンドレットを読み込んでくれます。
#私はなんとなく初期化のほうを使ってます。
#①直接読み込む
Add-PSSnapin VMware.VimAutomation.Core
#②初期化スクリプトを使用する
Import-Module "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironment.ps1"

#接続
Connect-VIServer -User [ユーザ名] -Password [パスワード] [vCenterのIPアドレス]
#特定のVMのパフォーマンス情報取得
Get-Stat -Realtime -Entity (Get-VM [vmname]) | Export-csv -encoding unicode [filename]
#切断
Disconnect-VIServer –Server [vCenterのIPアドレス] -Confirm:$False
---

■リファレンス
・PowerCLI
http://www.vmware.com/support/developer/PowerCLI/PowerCLI51/html/index.html
・PowerShell
http://technet.microsoft.com/ja-jp/scriptcenter/gg236640