仮想マシン
 Computer >> コンピューター >  >> ソフトウェア >> 仮想マシン

VMware PowerCLIの使い方:インストール手順とvSphere・ESXi管理の基本コマンド徹底解説

VMware vSphere PowerCLIは、コマンドラインからVMwareインフラストラクチャを管理するためのPowerShellモジュール群です。PowerCLIを活用すれば、仮想マシン・データストア・ネットワーク・ユーザーの状態取得はもちろん、各種設定の変更や新規オブジェクトの作成が可能になります。さらに、ESXi、vCenter Server、vSphere、vSANといったVMware製品の運用タスクをPowerShellで自動化することもできます。

現在、VMwareが開発を続けているのはPowerShell Core(7.0以降)向けのPowerCLIのみです。PowerShell Coreはクロスプラットフォーム対応のため、WindowsだけでなくLinuxやmacOSでも利用できます。従来のWindows PowerShell 5.x向けモジュールにはセキュリティ修正のみが提供されており、最新のPowerShell Coreの使用が推奨されています。

WindowsへのVMware PowerCLIモジュールのインストール方法

Windows環境には、オンラインまたはオフラインのいずれかの方法でPowerCLIをインストールできます。

PowerShell Galleryからのオンラインインストール

PowerShell Galleryからオンラインでインストールするには、以下のコマンドを実行します。

Install-Module -Name VMware.PowerCLI

なお、PowerCLI vSphere 6.5以前はMSIインストーラー形式で配布されていました。

現在のユーザーアカウントのみにインストールしたい場合は、以下のように-Scope CurrentUserを指定します。

Install-Module VMware.PowerCLI -Scope CurrentUser

デフォルトでは最新バージョンがインストールされますが、特定のバージョンが必要な場合は、利用可能なバージョン一覧を確認してから指定してインストールできます。

Find-Module -Name VMware.PowerCLI -AllVersions|select version
Install-Module -Name VMware.PowerCLI -RequiredVersion 12.4.0.17860403

インストール中にNuGetプロバイダーの更新を求められるほか、「信頼されていないリポジトリ」からのインストール確認が表示されることがあります。Set-PSRepositoryコマンドレットを使えば、PowerShell Galleryを信頼済みとして登録できます。

インストール後は、モジュールが正しく導入されたかバージョン情報とあわせて確認しましょう。

Get-Module -ListAvailable VMware* | Select Name,version

既存のPowerCLIを更新する場合は、次のコマンドを実行するだけです。

Update-Module -Name VMware.PowerCLI

Chocolatey経由でのインストール

WindowsにパッケージマネージャーのChoco(Chocolatey)が導入済みであれば、リポジトリからPowerCLIを検索できます。

choco search vmware

検索結果を確認したうえで、以下のコマンドでインストールします。

choco install vmware-powercli-psmodule

なお、wingetにはまだPowerCLIモジュールは登録されていません。

オフライン環境へのインストール

インターネットに接続できない隔離環境のコンピューターには、オフラインインストーラーを使用します。手順は以下の通りです。

  1. PowerCLIモジュールのZIPファイルを公式サイト(https://code.vmware.com/web/tool/vmware-powercli)からダウンロードします(最新のVMware-PowerCLI 12.4.1のアーカイブサイズは約80MB)。
  2. アーカイブをPowerShellモジュールディレクトリに展開します。モジュールディレクトリの一覧は$env:PSModulePathで確認でき、通常はC:\Program Files\WindowsPowerShell\Modulesを使用します。
  3. インターネットからダウンロードしたファイルのブロックを解除します。
    cd "c:\Program Files\WindowsPowerShell\Modules"
    Get-ChildItem * -Recurse | Unblock-File
  4. PowerShellコンソールを開き、モジュールが認識されていることを確認します。Get-Module -Name VMware.PowerCLI –ListAvailable

モジュールのインポートと実行ポリシーの設定

PowerCLIモジュールを現在のPowerShell ISEやVisual Studio Codeのセッションに読み込むには、以下のコマンドを実行します。

Import-Module VMware.VimAutomation.Core

モジュール読み込み時に、スクリプト実行が無効化されている旨のエラーが表示される場合があります。

Import-Module: File C:\Program Files\WindowsPowerShell\Modules\VMware.VimAutomation.Sdk\12.4.0.18627054\VMware.VimAutomation.Sdk.psm1 cannot be loaded because running scripts is disabled on this system.

この場合は、PowerShellのスクリプト実行ポリシーを変更する必要があります。現在のセッション限定で許可するには、次のコマンドを使用します。

Set-ExecutionPolicy Unrestricted -Scope Process

リモートコンピューターのPowerCLIモジュールを利用する

PSRemotingを使えば、別のコンピューターにインストールされたPowerCLIモジュールをリモートからインポートして利用することも可能です。

$session = New-PSSession -ComputerName mun-svr01

セッション経由でモジュールをインポートします。

Import-Module -PSsession $session -Name VMware.VimAutomation.Core

作業完了後は、忘れずにセッションを閉じましょう。

Remove-PSSession $session

LinuxへのPowerCLIモジュールのインストール

PowerCLIはWindowsだけでなくLinux環境にもインストールできます。まずLinuxホストにPowerShell Coreをインストールし、その後コンソールで以下のコマンドを実行してVMware PowerCLIを導入します。

pwsh
Install-Module -Name VMware.PowerCLI

インストール後、セッションにモジュールをインポートします。

Import-Module VMware.PowerCLI

vSphereと仮想マシンを管理するための基本PowerCLIコマンド

PowerCLIモジュールに含まれるコマンドレットの一覧は、次のコマンドで取得できます(2200以上のコマンドが利用可能です)。

Get-Command –Module *vmware*

vCenter Server / ESXiホストへの接続

VMwareカスタマーエクスペリエンス向上プログラム(CEIP)の通知を無効化するには:

Set-PowerCLIConfiguration -Scope AllUsers -ParticipateInCeip $false

vCenter ServerまたはESXiホストへ接続するには:

Connect-VIServer <vCenter_or_ESXi_FQDN>

vCenter Serverで自己署名SSL証明書を使用している場合、PowerCLIは接続をブロックし、以下のようなエラーが表示されます。

Connect-VIServer Error: Invalid server certificate. Use Set-PowerCLIConfiguration to set the value for the InvalidCertificateAction option to Prompt if you'd like to connect once or to add a permanent exception for this server.
Additional Information: Could not establish trust relationship for the SSL/TLS secure channel with authority.

自己署名証明書を許可するには、次のコマンドで設定を変更します。

Set-PowerCLIConfiguration -Scope AllUsers -InvalidCertificateAction Warn

仮想マシンの操作

ESXi(またはvCenter)サーバーに登録されている仮想マシンの一覧を表示します。

Get–VM

電源がオフになっているVMだけを絞り込んで表示する例です。

Get-VM | Where {$_.Powerstate -ne "PoweredOn"} | Select Name, VMHost, NumCPU, MemoryMB, Version|Format-Table

仮想マシンを起動するには:

Start-VM -VM MUNTestVM1

VMware Toolsエージェント経由でVMを正常に再起動するには:

Restart-VMGuest -VM MunTestVM1 -Confirm:$False

仮想マシンをシャットダウンするには:

Shutdown-VMGuest -VM MunTestVM1 -Confirm:$False

特定VMのスナップショット一覧を表示するには:

Get-VM -VM MunTestVM1 | Get-Snapshot| Format-List

稼働中のVMをvMotionで別ホストへ移行するには、Move-VMコマンドを使用します。たとえば、mun-esxi1上の全VMをmun-esxi2へ移動する場合は次のようになります。

Get-VMHost mun-esxi1|Get-Vm| Move-VM –Destination (Get-VMHost mun-esxi2)

新しい仮想マシンを作成するには、New-VMコマンドレットを使用します。

New-VM –Name MunTestVM1 -VMHost mun-esxi1 –ResourcePool Production –DiskGB 20 –DiskStorageFormat Thin –Datastore MUN_MSA2000_Prod1

仮想マシンの設定変更にはSet-VMコマンドレットを使います。

ゲストOSとの連携

PowerCLIコマンドレットを使えば、仮想マシンのゲストOS内部ともやり取りできます。そのためにはVM内にVMware Toolsがインストールされている必要があります。VMware Toolsの更新は次のコマンドで実行できます。

Get-VMGuest MunTestVM1 | Update-Tools

Invoke-VMScriptを使用すると、ゲストWindows OS上でスクリプトやプログラムを実行できます。

$script = '"%programfiles%\Common Files\Microsoft Shared\MSInfo\msinfo32.exe" /report "%tmp%\inforeport"'
Invoke-VMScript -ScriptText $script -VM MunTestVM1 -HostCredential $hostCred -GuestCredential $VMCred -ScriptType Bat

複数のVMへ一括でファイルをコピーする例です。

Get-VM | Copy-VMGuestFile -Source C:\PS\get-size.ps1 -Destination C:\PS\ -LocalToGuest -GuestUser administrator -GuestPassword P@ssdr0w2

インフラ全体の管理コマンド

モジュールには、クラスタ・データセンター・データストア・ESXiホストを管理するためのコマンドレットも含まれています。

Get-VMHost
Get-Datacenter
Get-Cluster
Get-Datastore
Get-VirtualPortGroup

特定クラスタ内のESXiホスト一覧を名前順で表示するには:

Get-Cluster munprod1 | Get-VMHost | sort name

ESXiホストをメンテナンスモードへ切り替えるには:

Set-VMhost -VMHost mun-esxi1 -State Maintenance

iSCSI LUNをESXiホストに接続し、VMFSデータストアを作成する例です。

Get-ScsiLun -VmHost mun-esxi1 | ft
New-Datastore -Name 'mun_iscsi_datastore' -VMHost mun-esxi1 -Path naa.6000xxxxxxxxxxxxxxxx -Vmfs

ヒント: 無償版のVMware vSphere Hypervisorでは、PowerCLIは読み取り専用モードで動作します。ホストやVMの設定を参照するコマンドは使えますが、設定を変更することはできません。

PowerCLI活用スクリプトの参考例

VMwareインフラの情報取得や運用タスクの自動化に役立つPowerCLIの実践例を紹介します。以下のようなテーマの記事を参考に、独自のスクリプト作成に活かせます。

  • VMFSデータストアの空きディスク容量チェック
  • VMware仮想ディスク(VMDKファイル)とWindowsドライブのマッピング
  • IPアドレスやMACアドレスによるVMの検索方法
  • VMware ESXiホストへのSNMP設定
  • 応答不能になったVMware VMの強制再起動方法
  • VMwareテンプレートにおけるWindows Updateの自動化
  • ESXiインストールイメージへのドライバー注入
  • 「VM統合が必要」ステータスアラームへの対応
  • VMハードウェアバージョンのアップグレード

vSphere PowerCLIは、VMwareインフラストラクチャの管理と自動化を実現する強力なツールです。2000以上のコマンドレットを備えており、vSphere、vSAN、vRealize Operations Manager、vCloud Director、Site Recovery Manager、Horizon、NSX-T、VMware Cloud Services、VMware Cloud on AWSなど、クラウド・オンプレミス双方のVMware製品を幅広くカバーしています。

  1. Microsoft Edgeの拡張機能をインストール・管理する方法を徹底解説

    Microsoft Edgeには、Webをより快適に活用するための強力な機能が標準で搭載されています。Webノートでページに注釈を付けたり、Cortanaで情報を検索したり、閲覧モードで記事を読みやすく整えたりできるほか、拡張機能をインストールすることで、Edgeの使い勝手をさらに向上させることが可能です。 Microsoftは、Windows 10 Anniversary Update(周年アップデート)の公開とともに、Edge向けの拡張機能ストアを提供開始しました。なお、2015年11月のNovember UpdateやWindows 10の初期バージョンを利用している場合、拡張機能をイン

  2. VMware ESXiで仮想マシンのクローンを作成する手順を徹底解説

    本チュートリアルは、一般の家庭ユーザーにはあまり馴染みがないかもしれません。しかし、何らかの理由で環境にVMware ESXiを採用している方にとっては、きっと役立つ内容となるはずです。VMware ESXiは無料で提供されているベアメタル型ハイパーバイザーです。より多機能な有償製品「ESX Server」への購入を促すための、いわば導入版的な位置づけにあります。ESX Serverはあらゆる機能を備えている一方、価格も桁違いに高額です。ESXiは、ベアメタル仮想化における「低コストな選択肢」と言えるでしょう。そのため、上位製品にはある当たり前の機能がいくつか欠けており、クローン作成機能もその