Loading...

We've detected that your browser language is Chinese. Would you like to visit our Chinese website? [ Dismiss ]
By: Emma

vSphereクライアントによるVMware環境の管理は小規模環境では問題なく運用できますが、インフラが拡大するにつれ手動管理は急速に非効率になります。VMware PowerCLIは定型業務の自動化、複数のホストや仮想マシンの一括管理、大量処理を簡単に実行できる強力なツールを提供します。

本ガイドではPowerCLIのインストール手順、vSphere環境への接続方法、汎用コマンドとすぐ実行可能なスクリプトを活用し、VMwareの日常業務を自動化する方法を解説します。

VMware向けPowerShell CLI(PowerCLI)とは

PowerCLIはVMware環境の全レイヤーを管理・自動化するためのコマンドラインツールです。700種類以上のコマンドレットを搭載した複数のPowerShellモジュールで構成され、ネットワーク、ストレージ、仮想マシン、ゲストOS設定まであらゆる要素に対応します。

powercli logo

PowerShellはマイクロソフト製の基盤となる自動化フレームワークです。PowerCLIはVMware固有の機能を拡張実装しており、同一スクリプト内で標準PowerShellのロジック(ループ、条件分岐、変数)とVMware専用操作を組み合わせられます。

PowerCLIは幅広いVMware製品に対応しており、主な対象は以下の通りです。

  • vSphere(vCenter、ESXi)
  • Site Recovery Manager(SRM)
  • vSAN、NSX
  • VMware Cloud Director、VMware Aria Operations
  • VMware Horizon、HCX
  • AWS上のVMware Cloud

他のVMware自動化ツールとPowerCLIの比較

ツール 最適な用途 習得難易度 VMware純正 ステート管理機能
PowerCLI vSphere自動化、レポート作成、運用保守業務 低~中 はい なし
Ansible 構成管理、マルチプラットフォーム実行シナリオ モジュール経由で対応 なし
Terraform インフラリソースプロビジョニング(IaC) 中~高 プロバイダー経由で対応 あり
vSphere REST API 独自アプリ連携、開発フロー構築 はい なし

PowerShellに慣れた運用担当者にとって、PowerCLIは最も導入障壁が低いツールです。Terraformはインフラの初期構築に長けている一方、PowerCLIは一括更新、簡易レポート作成、臨時トラブルシューティングといった継続的な運用業務に適しており、状態ファイルの管理というオーバーヘッドが発生しません。

VMware向けPowerShell CLI(PowerCLI)のインストール方法

PowerCLIのインストール手順は単純ですが、事前要件を満たすことで後続の一般的なエラーを回避できます。

事前要件

  • PowerShellバージョン:推奨される最低バージョンはPowerShell 7.4以降です。PowerShell 5.1は廃止予定のため、利用を推奨しません。
  • オペレーティングシステム:PowerCLIはクロスプラットフォーム対応で、Windows、macOS、Linux上で動作します。3OSすべてでインストールコマンドは共通です。
  • 権限:モジュールをグローバルインストールするには管理者またはroot権限が必要です。昇格権限なしでインストールする場合はパラメータ -Scope CurrentUser を使用してください。
  • インターネット接続:方法1の実行に必須です。セキュア環境または隔離環境(エアギャップ)の場合は方法2を利用します。

方法1:オンラインインストール(推奨)

PowerCLIを最も簡単に導入する手法で、PowerShellギャラリーから最新版を直接取得します。

  1. PowerCLIのインストール:

Install-Module -Name VCF.PowerCLI

  1. 現在のユーザー限定インストール(管理者権限不要):

Install-Module -Name VCF.PowerCLI -Scope CurrentUser

  1. インストール確認:

Get-Module -Name VCF.PowerCLI -ListAvailable

正常に実行されると、利用可能なモジュール、バージョン番号、インストール先ディレクトリが一覧表示されます。

方法2:オフラインインストール(隔離環境向け)

対象マシンがインターネットに接続できない場合に使用します。

  1. インターネット接続可能な端末から、Broadcom開発者ポータルより最新版PowerCLIのZIPファイルをダウンロードします。
  2. USBドライブまたは安全な内部経路を介し、ZIPファイルをオフライン端末に転送します。
  3. 対象端末のPowerShellモジュール格納ディレクトリを確認します。

$env:PSModulePath

  1. 出力されたパスのいずれかのフォルダにZIPファイルを展開します。
  2. コピーしたファイルのブロック解除を実行します。

cd path_to_powershell_modules_folder

Get-ChildItem * -Recurse | Unblock-File

  1. モジュールの認識状況を確認します。

Get-Module -Name VCF.PowerCLI -ListAvailable

注記:モジュールフォルダ名はモジュール名と完全一致させる必要があります。不一致の場合、PowerShellがコマンドレットを読み込めなくなります。

PowerCLIからVMware環境へ接続する方法

インストール完了後、最初に実施する作業はVMware環境への接続です。個別のESXiホストに直接接続してローカルなトラブル調査を行うことも可能ですが、多くの運用担当者はvCenter Serverに接続し、単一セッションでクラスタ全体を管理します。

Connect-VIServerコマンド

Connect-VIServer コマンドレットはローカルPCとvSphere APIの間にセッションを確立します。接続後、接続先サーバーは変数 $DefaultVIServers に保存され、以降のコマンドレットは自動的に当該サーバーに対して実行されます。

# vCenter Serverへ接続

Connect-VIServer -Server vcenter.example.com

Windowsログオンユーザーに必要な権限が付与されている場合、ログインプロンプトなしで接続されます。権限が不足している場合はログイン画面が表示されます。

SSL証明書警告の対処

既定設定では、自己署名証明書を使用する検証環境などで信頼できない証明書を検知するとPowerCLIが警告を表示、または接続を遮断します。事前に下記コマンドを1回実行することで証明書の検証ルールを設定できます。

# 証明書エラーを無視する設定を適用
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false

handling SSL certificate warnings

注記:Ignore は検証環境または信頼済み内部環境のみで使用してください。本番環境では検証を回避せず、正式な署名付き証明書を導入することを推奨します。

資格情報の安全な保存方法

スクリプト内にパスワードをハードコーディングするのは初心者に多いミスであり、重大なセキュリティリスクとなります。代わりにGet-Credentialを使用し、暗号化されたオブジェクトとしてメモリ上に資格情報を取得します。

# 資格情報の入力プロンプトを表示し保存
$myCreds = Get-Credential

# 保存した資格情報を使用して接続
Connect-VIServer -Server vcenter.example.com -Credential $myCreds 
storing credentials securely
ヒント:対話型入力が実施できない自動・定時実行スクリプトの場合は、VICredentialStoreNew-VICredentialStoreItem経由)またはPowerShellのSecretManagementモジュールを活用し、資格情報を安全に保管・呼び出してください。

適切な切断処理

Connect-VIServer を実行するたびにサーバー側にセッションが確保されます。明示的に切断しない限りリソースが開放されないため、作業またはスクリプトの最後に必ずセッションを切断してください。

# すべてのアクティブサーバーから切断
Disconnect-VIServer -Server * -Confirm:$false 

 

disconnect

注記:既定設定の Disconnect-VIServer は同一サーバーに対する最後の接続のみ切断します。同一サーバーに複数セッションを開いている場合は -Force パラメータを追加し、一括切断してください。

運用担当者が必ず覚えるべきPowerCLI汎用コマンド

vCenterへ接続後、PowerCLIのコマンドレットを使用することでコマンドラインからインフラ全体を管理可能です。GUIと異なり、数秒で環境全体の情報を取得し、直接レポートや自動化フローに連携させられます。

仮想マシン管理

ステータス確認からリソース追加まで、日々のVM業務に必要なコマンドレットを記載します。

  • Get-VM:仮想マシン一覧を出力します。Where-Object を使用し任意の項目でフィルタリング可能です。
 # 起動中のVMを一覧表示
 Get-VM | Where-Object {$_.PowerState -eq "PoweredOn"} 

 

get vm

  • Start-VM / Stop-VM:VMの電源状態を制御します。

Start-VM -VM "Web-Server-01" -Confirm:$false

  • New-VM:新規仮想マシンを作成します。

New-VM -Name "Test-VM" -ResourcePool "Development" -Datastore "DS-01"

  • Remove-VM:仮想マシンと関連ファイルを完全削除します。

Remove-VM -VM "Test-VM" -DeletePermanently -Confirm:$false

注記:本操作は取り消し不可能です。実際に実行する前に必ず -WhatIf を付加し、対象VMが正しいか確認してください。

ホスト管理

vCenter GUIを開かず、ESXiホストの情報取得やメンテナンスモード移行を実行できます。

  • Get-VMHost:ホストの接続状態、電源状態などの情報を取得します。

Get-VMHost | Select-Object Name, ConnectionState, PowerState

  • Set-VMHost:ホストをメンテナンスモードに移行し、vMotionにより稼働中のVMを自動的に他ホストへ移行します。

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

 

snapshot management

ヒント:スナップショットは安全策として有効ですが、適切な管理が不可欠です。詳細はスナップショット運用ベストプラクティススナップショットからのVM復元手順の記事を参照してください。

レポート作成・フィルタリング

PowerCLIの最大の強みは、コマンドレットとPowerShellのパイプラインを組み合わせられる点です。Where-ObjectSelect-Object により追加ツールなしで出力データの抽出・整形が可能です。

  • 停止中VMの抽出:

Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Select-Object Name, MemoryGB

  • VM全台目録をCSVに出力:

Get-VM | Select-Object Name, NumCPUs, MemoryGB, PowerState | Export-Csv -Path "C:\Reports\VM_Inventory.csv" -NoTypeInformation

ストレージ・ネットワーク管理

  • Get-Datastore:全ストレージの空き容量・総容量を取得します。

Get-Datastore | Select-Object Name, FreeSpaceGB, CapacityGB

  • Get-VirtualSwitch:標準仮想スイッチを一覧表示します。分散スイッチの場合はGet-VDSwitchを使用します
# 標準仮想スイッチ一覧
Get-VirtualSwitch

# 分散仮想スイッチ一覧
Get-VDSwitch 

 

get virtual switch

注記:Get系コマンドはいつ実行しても安全です。Set、Remove、Stop系コマンドを実行する前には必ず -WhatIf を付加し、対象オブジェクトが正しいか検証してください。

実務で活用するPowerCLI自動化スクリプト(コピーして即実行可能)

単独コマンドも便利ですが、自動化スクリプトこそPowerCLIによる工数削減効果を発揮します。下記のスクリプトは頻出する保守・レポート業務に対応しており、少し修正するだけで実行可能です。

1. VM一括台帳レポート作成

全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 

bulk vm inventory report

2. パッチ適用前の自動スナップショット作成

対象クラスタ内の全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

 

auto snapshot before planning

注記:-Quiesce パラメータは各ゲストOSにVMware Toolsがインストール・起動している必要があります。Toolsが導入されていないとコマンドがエラーを出力するため、全対象VMにToolsが導入済みでない限り -Quiesce:$false を設定してください。

3. 7日以上経過した古いスナップショット検出

長期間放置されたスナップショットはデータストア容量を消費し、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

find snapshot older than 7 days

4. フォルダ単位のVM一括起動・停止

開発検証環境や部門別にフォルダでVMを分類している場合、1コマンドで配下のVMを一括起動または停止できます。

# 「Dev-Lab」フォルダ配下の停止中VMを一括起動
Get-Folder "Dev-Lab" | Get-VM | Where-Object {$_.PowerState -eq "PoweredOff"} | Start-VM -Confirm:$false

bulk power on off vms by folders

5. ホストのメンテナンスモード自動実行

本スクリプトはホストをメンテナンスモードに移行します。-EvacuateパラメータによりvMotionが起動し、ホストがメンテナンスに入る前に稼働中VMをクラスタ内の他ホストへ自動移行します。

注記:-Evacuateパラメータを使用するにはクラスタでVMware DRSを有効化する必要があります。DRSが無効な場合は手動でVMを移行してからメンテナンスモードへ移行してください。
$targetHost = "esxi-hostname.example.com"

# 全VMを退避しホストをメンテナンスモードへ移行
Set-VMHost -VMHost $targetHost -State "Maintenance" -Evacuate

automate host maintenance mode

6. データストア空き容量不足アラート出力

空き容量が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

 

low datastore space alert

VMware PowerCLIの一般的なエラーとトラブルシューティング

経験豊富な運用担当者でも、証明書、セキュリティポリシー、バージョン更新関連で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

 

invalid credentials in scheduled tasks

廃止予定コマンドレットの警告

Broadcomは定期的に旧版コマンドレットを廃止し、最新のvSphere API規格に対応した新しいコマンドに置き換えています。警告メッセージには代替コマンドが記載されています。最新の変更一覧はBroadcom開発者ポータルのPowerCLIリリースノートを確認してください。

PowerCLIスクリプトを超えたVMware環境の保護

PowerCLIはVMware環境を強力に制御できますが、スクリプトだけではデータ損失を防ぐことはできません。

スナップショットの自動作成や資産インベントリレポートの生成は優れた運用手法ですが、スナップショットはバックアップではありません。スナップショットはVMと同じデータストアに保存されるため、ストレージ障害が発生すると両方が同時に失われます。

真の保護を実現するには、自動化ツールと併用する専用のバックアップソリューションが必要です。そこで登場するのがi2Backupです。

i2Backupは、PowerCLI管理者が日常的に管理するVMware基盤、物理サーバー、オンプレミスおよびハイブリッドクラウド上で稼働するデータベース向けに開発されたエンタープライズ向けバックアップソリューションです。

  • エージェントレスVMバックアップ:i2BackupはVMware標準APIを活用し、ゲストOS内にソフトウェアをインストールすることなくVMをバックアップ可能。本番環境のパフォーマンスに影響を与えません。
  • 幅広いプラットフォーム対応:VM以外にも物理サーバー、主要データベース(Oracle、MySQL、SQL Server、DB2など)、非構造化データに対応。複合環境であっても単一プラットフォームで一元管理できます。
  • 自動スケジュールとスマートクリーンアップ:毎時、毎日、毎週、毎月単位でバックアップスケジュールを設定可能。保存期間ポリシーにより古いバックアップが自動削除され、ストレージ使用量を抑制します。
  • 高速かつ柔軟なリカバリ:バックアップデータを対象プラットフォームにリモートマウントしてVM全体を瞬時に復元、またはVM全体を操作せずに単一ファイルやデータベースレコードのみ復元可能です。
  • エンタープライズ級セキュリティ:バックアップデータの転送時にAESとSM4暗号化を適用。ストレージはWORM規格に準拠し、不正な変更や削除を防止します。

バックアップ以上の機能が必要な環境には、i2Availabilityがリアルタイムレプリケーションと自動フェイルオーバーによる高可用性を提供、クラウドや新基盤へワークロードを移行する場合はi2Migrationが業務停止なしのクロスプラットフォーム移行をサポートします。下記ボタンからInfo2soft製品の無料トライアルをお申し込みいただけます。

60日間無料トライアル

まとめ

PowerCLIは時間のかかる反復的なvSphere作業を自動化された再利用可能なスクリプトに変換します。vCenterへの接続、主要コマンドレットの実行、一括レポート作成やメンテナンスワークフローの構築まで、本ガイドで習得するスキルはコマンドラインからVMware基盤を管理するための確かな基礎となります。

次のステップとして、VMインベントリ作成やパッチ適用前のスナップショット作成といった日常的な手作業を1つ選び、初めてのPowerCLIスクリプトに落とし込んでみてください。時間削減効果を実感すれば、自然と他の作業も自動化できるようになります。

ただし、自動化は運用業務を効率化するだけで、データ保護を担うものではない点にご留意ください。PowerCLIワークフローとInfo2softのi2Backupといった専用バックアップソリューションを組み合わせ、運用と保護の両面から環境を万全に守りましょう。

概要は準備中です

関連記事

vCenter 間で VMware 仮想マシンを移行する 4 つの手法
本記事ではvCenter間でVMware仮想マシンを移行する4つの安定的な手法を紹介し、停止時間、規模、環境の複雑さに応じて適切な移行方式を選定するための参考情報を提供します。
記事を読む
【4 つの手法】vCenter からすべての VMware 仮想マシン一覧を出力する方法
効率的な資産台帳管理の出発点は可視化です。本ガイドでは、vCenterから詳細なVMデータを抽出する実績のある4つの手法を解説し、システム管理者によるレポート作成、監査、キャパシティ計画の効率化を支援します。
記事を読む
異種仮想化:2026年完全ガイド
複数のハイパーバイザー、GPU、アーキテクチャを混在管理することはもはや選択肢ではなく、現代ITの新たな常識となっています。本ガイドでは異種仮想化に関する基礎知識から実際の導入戦略まで、必要な情報をすべて解説します。
記事を読む
完全ガイド:VMware Remote Consoleのダウンロード・インストール手順
このガイドでは、Windows、Linux、macOS上で仮想マシンにリモート接続するためのVMware Remote Console(VMRC)のインストール手順と使用方法を解説します。また、VMRCの機能、ショートカット、WebコンソールやRDPとの違いについても記載しています。
記事を読む
目次:
最新情報を購読
最新のインサイト、ニュース、限定コンテンツをお届けします。いつでも配信解除が可能です。
購読する
ビジネスデータのセキュリティ強化を始めませんか?
60日間の無料トライアルまたはデモで、Info2softが企業データをどのように保護するかをご確認ください。
フォームにご記入の上、送信してください。担当者より追ってご連絡いたします。
このフォームを送信することにより、 プライバシー通知を読み、同意したことを確認します。
{{ isSubmitting ? '送信中...' : '送信する' }}