調べていたら PowerShell Gallery が 4月から TLS 1.0 / TLS 1.1での接続が不可となり TLS 1.2 が必須となっていたことが原因だったようです。
詳細は以下の Microsoft の公式アナウンスを参照ください。
PowerShell Gallery TLS Support
https://devblogs.microsoft.com/powershell/powershell-gallery-tls-support/
ワークアラウンドとして適用した PowerShellGet 2.2.4.x から TLS 1.2 が強制されるようになっていたのでエラーが回避できた様です。
PowerShell で TLS 1.2 を強制することでの回避方法
先日の環境の PowerShellGet と PackageManagement をそれぞれ初期バージョンの 1.0.0.1 に戻して、TLS 1.2 を強制することで問題が回避できるか確認しました。1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# 最初にモジュールのバージョンを確認PS C:\> Get-Module PackageManagement,PowershellGet -list | Select-Object Name,Version,PathName Version Path---- ------- ----PackageManagement 1.0.0.1 C:\Program Files\WindowsPowerShell\Modules\PackageManagement\1.0.0.1\PackageManagement.psd1PowerShellGet 1.0.0.1 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PowerShellGet.psd1# この状態で PowerShell Gallery から PowerCLI を見つけることができるか確認PS C:\> Find-Module -Name VMware.PowerCLIPackageManagement\Find-Package : 指定された検索条件とパッケージ名 'VMware.PowerCLI' と一致するものが見つかりませんでした。登録されている使用発生場所 C:\Program Files\WindowsPowerShell\Modules\PowerShellGet\1.0.0.1\PSModule.psm1:1360 文字:3+ PackageManagement\Find-Package @PSBoundParameters | Microsoft ...+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Microsoft.Power...ets.FindPackage:FindPackage) [Find-Package], Exception + FullyQualifiedErrorId : NoMatchFoundForCriteria,Microsoft.PowerShell.PackageManagement.Cmdlets.FindPackage# エラーになったのでプロトコルを確認PS C:\> [Net.ServicePointManager]::SecurityProtocolSsl3, Tls# Microsoft の公式ブログにもある手順で TLS 1.2 を設定PS C:\> [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12# TLS 1.2 が指定されたことを確認PS C:\> [Net.ServicePointManager]::SecurityProtocolTls12# もう一度 Find-Module で PowerCLI が見つかるか確認PS C:\> Find-Module -Name VMware.PowerCLIVersion Name Repository Description------- ---- ---------- -----------12.0.0.... VMware.PowerCLI PSGallery This Windows PowerShell module contains VMware.PowerCLI |
手順としては非常にシンプルで、
[Net.ServicePointManager]::SecurityProtocol
で現在のプロトロルバージョンを確認し、古いバージョンの指定のままならば
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
で TLS 1.2 の利用を強制設定すれば今まで通りデフォルトバージョンの PowerShellGet でも PowerCLI のインストール、メンテナンスができました。
セキュリティの観点からも既定値はあらかじめ変えておいたほうが良いかもしれませんね。
ご参考まで