ホーム > インフラ, PowerShell > PowerCLIを使ってVMを管理する。

PowerCLIを使ってVMを管理する。


vSphererとPowerCLI

VMWareの仮想化ソリューションvSphererには、無料で使えるESXiという製品があります。ESXiも他の製品と同じくvSphere ClientというGUIツールから管理を行うのですが、無料ゆえの悲しさか対象のサーバーで稼働中のVMをすべてサスペンドとか、特定のVMをすべて起動すると言った管理系の自動化機能が不足しています。このあたりを補ってくれるのが、コマンドラインインターフェイスのPowerCLIです。

PowerCLIはPowerShellを利用してvSpherer上の仮想PCを操作するコマンドラインインターフェイスで、仮想サーバーへの接続、切断(Connect-VIServer、Disconnect-VIServer)、VMの起動、停止、サスペンド(Start-VM、Stop-VM、Suspend-VM)、VMの作成、削除、移動(New-VM、Remove-VM、Move-VM)、VMの編集(Set-*)、スナップショットの管理(Get-Snapshot、New-SnapShot、Set-SnapShot、Remove-SnapShot)といったコマンドレットが用意されっています。

インストール

現在の最新版はvSphere PowerCLI 5.0.1です。VmWareのダウンロードページからダウンロードできます。

前述のとおり、PowerShell上で動作するのでPowerShellをインストールしていない場合は、別途Microsoftからダウンロードしてインストールしておきましょう。

image

image

VMWare VIXコンポーネントが必要なので一緒にインストールされるそうです。”OK”をクリックしましょう。

image

PowerShellの既定の状態では、ポリシーの設定で外部スクリプトの実行が制限されています。このためPowerCLIを動作させるには、PowerCLIインストール後にポリシーをRemoteSignedよりも緩くしてくださいということです。”Continue”をクリックしましょう。

image image

image image

image image

image

初期設定

インストール終了後にPowerCLIを実行するとこんな画面になります。

image

スクリプトの実行がシステムで無効になっているため、ファイル C:\Program Files (x8
)\VMware\Infrastructure\vSphere PowerCLI\Scripts\Initialize-PowerCLIEnvironmen
.ps1 を読み込めません。詳細については、「get-help about_signing」と入力してヘ
ルプを参照してください。
発生場所 行:1 文字:2
. <<<<  "C:\Program Files (x86)\VMware\Infrastructure\vSphere PowerCLI\Script
\Initialize-PowerCLIEnvironment.ps1"
   + CategoryInfo          : NotSpecified: (:) []、PSSecurityException
   + FullyQualifiedErrorId : RuntimeException

インストール時にポリシーをRemoteSinged以上に変更しろと言っていたので、PowerCLIを再度管理者として起動して、次のコマンドを実行します。

PS C:\Windows\system32> Set-ExecutionPolicy RemoteSigned

実行ポリシーの変更
実行ポリシーは、信頼されていないスクリプトからの保護に役立ちます。実行ポリシー
を変更すると、about_Execution_Policies のヘルプ
トピックで説明されているセキュリティ上の危険にさらされる可能性があります。実行
ポリシーを変更しますか?
[Y] はい(Y)  [N] いいえ(N)  [S] 中断(S)  [?] ヘルプ (既定値は "Y"): y

設定が終わったら、通常のユーザーでPowerCLIを起動しなおしてください。こんな画面になります。

image

つないでみる

せっかくなので、繋いでみましょう。サーバーへの接続にはConnect-VIServerコマンドレットを利用します。

Connect-VIServer –Server XXXXX –User XXX –Password XXX

テスト証明書で運用している場合は、黄色でこんなメッセージが出ると思いますが、とりあえず無視で。

警告: There were one or more problems with the server certificate:

* The X509 chain could not be built up to the root certificate.

* The certificate’s CN name does not match the passed value.

ホストしているVMの一覧を見てみましょう。コマンドレットはGet-VMです。

PowerCLI > Get-VM

Name PowerState Num CPUs Memory (MB)
—- ———- ——– ———–
VMSERVER1 PoweredOn 1 3072
VMSERVER2 PoweredOn 1 3072
VMSERVER3 PoweredOff 1 3072
VMSERVER4 PoweredOff 1 3072

4台ホストしていて2台稼働中なようです。PowerShellなので、パイプしてフィルタできます。稼働中のVMだけ抜き出すにはこんな感じ。

PowerCLI > Get-VM | Where { $_.PowerState -eq "PoweredOn" }

Name                 PowerState Num CPUs Memory (MB)
—-                 ———- ——– ———–
VMSERVER1            PoweredOn  1        3072
VMSERVER2            PoweredOn  1        3072

さらにフィルターしたVMをサスペンドさせたければ、オブジェクトをさらにパイプしてSuspend-VMを実行します。

PowerCLI  > Get-VM | Where { $_.PowerState -eq "PoweredOn" } | Suspend-VM -Confirm:$False
Name                 PowerState Num CPUs Memory (MB)
—-                 ———- ——– ———–
VMSERVER1             Suspended 1        3072
VMSERVER2             Suspended 1        3072

実行すると、こんな表示が出てタスクの進捗を教えてくれます。

image

VMから切断するには、Disconnect-VIServerコマンドレットです。

PowerCLI > Disconnect-VIServer –Server XXXX -Confirm:$False

 

いやー、やっぱりPowerShellは楽でいいですね。VMWareにはPerlのCLIもあるんですが文字列処理をしなくていいのでほんと楽です。PS1ファイルにスクリプトを保存しておけば停電対策もばっちり。

カテゴリー:インフラ, PowerShell タグ: ,
  1. まだコメントはありません。
  1. 2017年5月7日 2:49 午後

コメントを残す