Info2softは、ウェブサイトでより快適で適切な閲覧体験を提供するためにCookieを使用しています。 プライバシーポリシー
Loading...
vSphereクライアントによるVMware環境の管理は小規模環境では問題なく運用できますが、インフラが拡大するにつれ手動管理は急速に非効率になります。VMware PowerCLIは定型業務の自動化、複数のホストや仮想マシンの一括管理、大量処理を簡単に実行できる強力なツールを提供します。
本ガイドではPowerCLIのインストール手順、vSphere環境への接続方法、汎用コマンドとすぐ実行可能なスクリプトを活用し、VMwareの日常業務を自動化する方法を解説します。
PowerCLIはVMware環境の全レイヤーを管理・自動化するためのコマンドラインツールです。700種類以上のコマンドレットを搭載した複数のPowerShellモジュールで構成され、ネットワーク、ストレージ、仮想マシン、ゲストOS設定まであらゆる要素に対応します。
PowerShellはマイクロソフト製の基盤となる自動化フレームワークです。PowerCLIはVMware固有の機能を拡張実装しており、同一スクリプト内で標準PowerShellのロジック(ループ、条件分岐、変数)とVMware専用操作を組み合わせられます。
PowerCLIは幅広いVMware製品に対応しており、主な対象は以下の通りです。
他のVMware自動化ツールとPowerCLIの比較
| ツール | 最適な用途 | 習得難易度 | VMware純正 | ステート管理機能 |
|---|---|---|---|---|
| PowerCLI | vSphere自動化、レポート作成、運用保守業務 | 低~中 | はい | なし |
| Ansible | 構成管理、マルチプラットフォーム実行シナリオ | 中 | モジュール経由で対応 | なし |
| Terraform | インフラリソースプロビジョニング(IaC) | 中~高 | プロバイダー経由で対応 | あり |
| vSphere REST API | 独自アプリ連携、開発フロー構築 | 高 | はい | なし |
PowerShellに慣れた運用担当者にとって、PowerCLIは最も導入障壁が低いツールです。Terraformはインフラの初期構築に長けている一方、PowerCLIは一括更新、簡易レポート作成、臨時トラブルシューティングといった継続的な運用業務に適しており、状態ファイルの管理というオーバーヘッドが発生しません。
PowerCLIのインストール手順は単純ですが、事前要件を満たすことで後続の一般的なエラーを回避できます。
-Scope CurrentUser を使用してください。PowerCLIを最も簡単に導入する手法で、PowerShellギャラリーから最新版を直接取得します。
Install-Module -Name VCF.PowerCLI
Install-Module -Name VCF.PowerCLI -Scope CurrentUser
Get-Module -Name VCF.PowerCLI -ListAvailable
正常に実行されると、利用可能なモジュール、バージョン番号、インストール先ディレクトリが一覧表示されます。
対象マシンがインターネットに接続できない場合に使用します。
$env:PSModulePath
cd path_to_powershell_modules_folder
Get-ChildItem * -Recurse | Unblock-File
Get-Module -Name VCF.PowerCLI -ListAvailable
インストール完了後、最初に実施する作業はVMware環境への接続です。個別のESXiホストに直接接続してローカルなトラブル調査を行うことも可能ですが、多くの運用担当者はvCenter Serverに接続し、単一セッションでクラスタ全体を管理します。
Connect-VIServer コマンドレットはローカルPCとvSphere APIの間にセッションを確立します。接続後、接続先サーバーは変数 $DefaultVIServers に保存され、以降のコマンドレットは自動的に当該サーバーに対して実行されます。
# vCenter Serverへ接続
Connect-VIServer -Server vcenter.example.com
Windowsログオンユーザーに必要な権限が付与されている場合、ログインプロンプトなしで接続されます。権限が不足している場合はログイン画面が表示されます。
既定設定では、自己署名証明書を使用する検証環境などで信頼できない証明書を検知するとPowerCLIが警告を表示、または接続を遮断します。事前に下記コマンドを1回実行することで証明書の検証ルールを設定できます。
# 証明書エラーを無視する設定を適用
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Ignore は検証環境または信頼済み内部環境のみで使用してください。本番環境では検証を回避せず、正式な署名付き証明書を導入することを推奨します。スクリプト内にパスワードをハードコーディングするのは初心者に多いミスであり、重大なセキュリティリスクとなります。代わりにGet-Credentialを使用し、暗号化されたオブジェクトとしてメモリ上に資格情報を取得します。
# 資格情報の入力プロンプトを表示し保存
$myCreds = Get-Credential
# 保存した資格情報を使用して接続
Connect-VIServer -Server vcenter.example.com -Credential $myCreds
VICredentialStore(New-VICredentialStoreItem経由)またはPowerShellのSecretManagementモジュールを活用し、資格情報を安全に保管・呼び出してください。Connect-VIServer を実行するたびにサーバー側にセッションが確保されます。明示的に切断しない限りリソースが開放されないため、作業またはスクリプトの最後に必ずセッションを切断してください。
# すべてのアクティブサーバーから切断
Disconnect-VIServer -Server * -Confirm:$false
Disconnect-VIServer は同一サーバーに対する最後の接続のみ切断します。同一サーバーに複数セッションを開いている場合は -Force パラメータを追加し、一括切断してください。vCenterへ接続後、PowerCLIのコマンドレットを使用することでコマンドラインからインフラ全体を管理可能です。GUIと異なり、数秒で環境全体の情報を取得し、直接レポートや自動化フローに連携させられます。
ステータス確認からリソース追加まで、日々のVM業務に必要なコマンドレットを記載します。
Where-Object を使用し任意の項目でフィルタリング可能です。 # 起動中のVMを一覧表示
Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"}
Start-VM -VM "Web-Server-01" -Confirm:$false
New-VM -Name "Test-VM" -ResourcePool "Development" -Datastore "DS-01"
Remove-VM -VM "Test-VM" -DeletePermanently -Confirm:$false
-WhatIf を付加し、対象VMが正しいか確認してください。vCenter GUIを開かず、ESXiホストの情報取得やメンテナンスモード移行を実行できます。
Get-VMHost | Select-Object Name, ConnectionState, PowerState
Set-VMHost -VMHost "esxi-01.example.com" -State "Maintenance"
パッチ適用や大規模変更前にスナップショットは有用ですが、放置されたスナップショットはデータストア容量を急速に消費します。下記コマンドで管理を徹底できます。
# スナップショット作成
Get-VM "DB-Prod" | New-Snapshot -Name "Pre-Patching"
# 全VMのスナップショット一覧出力
Get-VM | Get-Snapshot
# 指定したスナップショットを削除
Get-Snapshot -VM "DB-Prod" | Remove-Snapshot -Confirm:$false
PowerCLIの最大の強みは、コマンドレットとPowerShellのパイプラインを組み合わせられる点です。Where-Object と Select-Object により追加ツールなしで出力データの抽出・整形が可能です。
Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Select-Object Name, MemoryGB
Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState | Export-Csv -Path "C:\Reports\VM_Inventory.csv" -NoTypeInformation
ストレージ・ネットワーク管理
Get-Datastore | Select-Object Name, FreeSpaceGB, CapacityGB
# 標準仮想スイッチ一覧
Get-VirtualSwitch
# 分散仮想スイッチ一覧
Get-VDSwitch
-WhatIf を付加し、対象オブジェクトが正しいか検証してください。単独コマンドも便利ですが、自動化スクリプトこそPowerCLIによる工数削減効果を発揮します。下記のスクリプトは頻出する保守・レポート業務に対応しており、少し修正するだけで実行可能です。
全VMのリソース情報を日付付きCSVファイルに出力するスクリプトで、容量計画や経営向け報告に活用できます。
# 全VMを取得しリソース情報をCSV出力
Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState,
@{N="Datastore"; E={(Get-Datastore -VM $_).Name}},
@{N="IPAddress"; E={$_.Guest.IPAddress[0]}} |
Export-Csv -Path "C:\Reports\VM_Inventory_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
対象クラスタ内の全VMに対し、パッチ適用前に名前付きスナップショットを作成し、不具合発生時のロールバックポイントを確保します。
# 対象クラスタ名を定義
$clusterName = "Production-Cluster-01"
# クラスタ内全VMに日付付きスナップショット作成
Get-Cluster -Name $clusterName | Get-VM |
New-Snapshot -Name "Pre-Patching-$(Get-Date -Format 'yyyyMMdd')" `
-Description "月次パッチ適用前の自動作成スナップショット" `
-Quiesce:$false -Memory:$false
-Quiesce パラメータは各ゲストOSにVMware Toolsがインストール・起動している必要があります。Toolsが導入されていないとコマンドがエラーを出力するため、全対象VMにToolsが導入済みでない限り -Quiesce:$false を設定してください。長期間放置されたスナップショットはデータストア容量を消費し、VMパフォーマンスを低下させます。本スクリプトで7日以上経過したスナップショットを一覧出力し、確認・削除作業に活用できます。
# 7日以上古いスナップショットを抽出
$limit = (Get-Date).AddDays(-7)
Get-VM | Get-Snapshot | Where-Object { $_.Created -lt $limit } |
Select-Object VM, Name, Created, SizeGB |
Sort-Object Created
開発検証環境や部門別にフォルダでVMを分類している場合、1コマンドで配下のVMを一括起動または停止できます。
# 「Dev-Lab」フォルダ配下の停止中VMを一括起動
Get-Folder "Dev-Lab" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Start-VM -Confirm:$false
本スクリプトはホストをメンテナンスモードに移行します。-EvacuateパラメータによりvMotionが起動し、ホストがメンテナンスに入る前に稼働中VMをクラスタ内の他ホストへ自動移行します。
$targetHost = "esxi-hostname.example.com"
# 全VMを退避しホストをメンテナンスモードへ移行
Set-VMHost -VMHost $targetHost -State "Maintenance" -Evacuate
空き容量が50GB未満のデータストアを抽出するスクリプトで、VM障害が発生する前にストレージの容量問題を検知できます。
# 空き容量50GB未満のデータストアを一覧表示
Get-Datastore | Where-Object { $_.FreeSpaceGB -lt 50 } |
Select-Object Name,
@{N="FreeGB"; E={[Math]::Round($_.FreeSpaceGB, 2)}},
@{N="CapacityGB"; E={[Math]::Round($_.CapacityGB, 2)}} |
Format-Table -AutoSize
経験豊富な運用担当者でも、証明書、セキュリティポリシー、バージョン更新関連でPowerCLIのエラーに遭遇します。頻出する問題と解決策を記載します。
接続時SSL証明書エラー
vCenterまたはESXiホストに自己署名証明書を使用しており、ローカルPCが証明書を信頼していない場合に発生します。証明書チェーンの検証をスキップして接続を許可するには、接続前に下記コマンドを1回実行します。
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
モジュールが見つからないエラー
現在のセッションにモジュールが読み込まれていない、またはシステム変数 $env:PSModulePath にインストールパスが含まれていないことが主な原因です。手動でモジュールを読み込んでください。
Import-Module VCF.PowerCLI
上記で解消しない場合は、オフラインインストール時のフォルダ展開が正常か、フォルダ名とモジュール名が一致しているか確認してください。
スクリプト実行がブロックされる
Windowsの実行ポリシーは既定で Restricted に設定されており、すべてのスクリプトの実行を遮断します。PowerShellを管理者権限で起動し、下記コマンドを実行します。
Set-ExecutionPolicy RemoteSigned
ローカルで作成したスクリプトは実行許可、インターネットからダウンロードしたスクリプトはデジタル署名を要求する設定です。
定時実行タスクで資格情報エラー
非対話型のバックグラウンド実行で対話ログインを試行する、または保存済みの資格情報オブジェクトが期限切れになると発生します。対話プロンプトに依存せず、暗号化ファイルに資格情報を保存しスクリプト内で読み込む方法を利用してください。
# 資格情報を1回保存
$cred = Get-Credential
$cred | Export-Clixml -Path "C:\Scripts\cred.xml"
# スクリプト内で資格情報を読み込み
$cred = Import-Clixml -Path "C:\Scripts\cred.xml"
Connect-VIServer -Server vcenter.example.com -Credential $cred
廃止予定コマンドレットの警告
Broadcomは定期的に旧版コマンドレットを廃止し、最新のvSphere API規格に対応した新しいコマンドに置き換えています。警告メッセージには代替コマンドが記載されています。最新の変更一覧はBroadcom開発者ポータルのPowerCLIリリースノートを確認してください。
PowerCLIはVMware環境を強力に制御できますが、スクリプトだけではデータ損失を防ぐことはできません。
スナップショットの自動作成や資産インベントリレポートの生成は優れた運用手法ですが、スナップショットはバックアップではありません。スナップショットはVMと同じデータストアに保存されるため、ストレージ障害が発生すると両方が同時に失われます。
真の保護を実現するには、自動化ツールと併用する専用のバックアップソリューションが必要です。そこで登場するのがi2Backupです。
i2Backupは、PowerCLI管理者が日常的に管理するVMware基盤、物理サーバー、オンプレミスおよびハイブリッドクラウド上で稼働するデータベース向けに開発されたエンタープライズ向けバックアップソリューションです。
バックアップ以上の機能が必要な環境には、i2Availabilityがリアルタイムレプリケーションと自動フェイルオーバーによる高可用性を提供、クラウドや新基盤へワークロードを移行する場合はi2Migrationが業務停止なしのクロスプラットフォーム移行をサポートします。下記ボタンからInfo2soft製品の無料トライアルをお申し込みいただけます。
PowerCLIは時間のかかる反復的なvSphere作業を自動化された再利用可能なスクリプトに変換します。vCenterへの接続、主要コマンドレットの実行、一括レポート作成やメンテナンスワークフローの構築まで、本ガイドで習得するスキルはコマンドラインからVMware基盤を管理するための確かな基礎となります。
次のステップとして、VMインベントリ作成やパッチ適用前のスナップショット作成といった日常的な手作業を1つ選び、初めてのPowerCLIスクリプトに落とし込んでみてください。時間削減効果を実感すれば、自然と他の作業も自動化できるようになります。
ただし、自動化は運用業務を効率化するだけで、データ保護を担うものではない点にご留意ください。PowerCLIワークフローとInfo2softのi2Backupといった専用バックアップソリューションを組み合わせ、運用と保護の両面から環境を万全に守りましょう。