古いWin2012等のOSで、VMWareのAPIであるPowerCLI動かす方法を調べてみました。
(現時点での最新バージョンは 13.2.1)
最新のVMware.PowerCLIは、以下の前提ソフトが必要なようです。
・.NET Framework 4.7.2 or later または .NET Core 3.1
・Windows PowerShell 5.1 または PowerShell 7.x
この条件は、Windows7(Win2008R2)以降であれば、MSからインストーラがダウンロードできますので、何とかなりそうです。
いろいろ試行錯誤した結果、
以下の方法で、インストール出来ることを確認しました。
- .netframework 4.7.2 以上に更新(OS再起動要求有)
現在の .netframework のバージョンを確認するには、以下のコマンドをpowershellで実行してください
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
$release = Get-ItemPropertyValue -LiteralPath 'HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full' -Name Release switch ($release) { { $_ -ge 533320 } { $version = '4.8.1 or later'; break } { $_ -ge 528040 } { $version = '4.8'; break } { $_ -ge 461808 } { $version = '4.7.2'; break } { $_ -ge 461308 } { $version = '4.7.1'; break } { $_ -ge 460798 } { $version = '4.7'; break } { $_ -ge 394802 } { $version = '4.6.2'; break } { $_ -ge 394254 } { $version = '4.6.1'; break } { $_ -ge 393295 } { $version = '4.6'; break } { $_ -ge 379893 } { $version = '4.5.2'; break } { $_ -ge 378675 } { $version = '4.5.1'; break } { $_ -ge 378389 } { $version = '4.5'; break } default { $version = $null; break } } if ($version) { Write-Host -Object ".NET Framework Version: $version" } else { Write-Host -Object '.NET Framework Version 4.5 or later is not detected.' } |
- Windows Management Frameworkを5.1以上に更新(OS再起動要求有)
バージョンを確認するには、Powershell上で以下のコマンドを実行し、
PSVersion行を確認してください。
1 |
$PSVersionTable |
- Install-Moduleが「NuGet プロバイダーが必要です」というエラーで失敗する場合、
Netの通信プロトコルをTLS1.2に変更する必要があります。
(TLS1.2に対応していない場合、powershellで実行)。
(設定確認)
[Net.ServicePointManager]::SecurityProtocol
(設定変更)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
- 既存PowerCLIアンインストール
(旧バージョンを既に導入していた場合、プログラムと機能から実施)
- PowerCLIのインストール(powershellからコマンド実行)
Install-Module VMware.PowerCLI
これで一旦インストールできました。
なお、今までは、Connect-VIServer接続時に、証明書エラーがあっても、黄色い文字で警告が出るのみで、処理の継続ができていましたが、
PowerCLI10以降では、完全にエラーとなり、処理が進まなくなっているようです。
これを回避するには、2つあり、以下のいずれかで対応します。
- Connect-VIServerのオプションで、-Force を付けて実行
- Set-PowerCLIConfiguration でPowerCLIの規定値を変える
1 2 3 4 5 6 7 8 |
(設定確認) PS C:> Get-PowerCLIConfiguration Scope ProxyPolicy DefaultVIServerMode InvalidCertificateAction DisplayDeprecationWarnings WebOperationTimeout Seconds ----- ----------- ------------------- ------------------------ -------------------------- ------------------- Session UseSystemProxy Multiple Unset True 300 User AllUsers |
1 2 3 4 5 6 7 8 9 10 |
(設定変更:PowerCLI10以前の動作と同じ、警告表示するが、作業は続行する) PS C:\> Set-PowerCLIConfiguration -InvalidCertificateAction Warn -Scope AllUsers Perform operation? Performing operation 'Update PowerCLI configuration.'? [Y] Yes [A] Yes to All [N] No [L] No to All [S]Suspend [?] Help (defaultis "Y"): A Scope ProxyPolicy DefaultVIServerMode InvalidCertificateAction DisplayDeprecationWarnings WebOperationTimeout Seconds ----- ----------- ------------------- ------------------------ -------------------------- ------------------- Session UseSystemProxy Multiple Warn True 300 User AllUsers Warn |
現在のPowerCLIコマンドのバージョンは以下のコマンドで確認できます。
1 |
Get-PowerCLIVersion |
PowerCLIのバージョンアップは、PowerCLI 6.5.1以降をPowerShell Galleryからすでにインストールしている場合は、以下のコマンドで実行できます。
1 |
Update-Module -Name VMware.PowerCLI |
PowerCLI 6.5.1以降インストール済での、PowerCLI削除は以下のコマンドで可能です。。
1 |
Get-Module -Name VMware.* -ListAvailable | Uninstall-Module -Force |
関連URL
Compatibility Matrix for VMware PowerCLI
.NET Framework 4.7.2 をダウンロード | 無料の公式ダウンロード (microsoft.com)
Download Windows Management Framework 5.1 from Official Microsoft Download Center
【PowerShell】Install-Module MSOnline実施時に「NuGet プロバイダーが必要です」と表示された場合 (zenn.dev)