Invoke-WebRequestコマンドレットの実行に問題があります。私はそのシナリオの約100%のケースが3よりも低いPSバージョンであることを読みましたが、それは私のケースではありません:
Name Value
---- -----
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
CLRVersion 4.0.30319.34011
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 10.0.10208.0
PSVersion 5.0.10208.0
SerializationVersion 1.1.0.1
OSのWindows 10 IoT Coreバージョンを使用していることを追加できます。実際、私の主な目的は単純なWebリクエストの実行ですが、このコマンドレットが機能しない理由、特にそれらの多くが機能しない場合に興味があります; /スイッチをオンにするスイッチなどのいくつかのウィンドウ機能が可能ですが、ちょうど私の推測。
更新
特定のモジュールで使用可能なコマンドレットを比較し、通常のシステムとIoTバージョン間でプリロードされたアセンブリを比較する限り、後者のバージョンは何らかの形でカットされているように見えますが、そのドキュメントはまだありません。
PowerShell v2を実行しているため、Windows Server 2008 R2サーバーでこの問題が発生しました。 v4にアップグレードすると、問題が修正されました。
Windows Management Framework 4.(PowerShell 4.0を含む)
V5以降、Invoke-WebRequest
は まだ文書化されています です。
バージョンを確認するには:
$PSVersionTable.PSVersion
PSバージョン2(コマンドレットの代わりに.netライブラリを使用)で行うのと同じ方法で要求を作成しようとしても機能しません...
$request = [System.Net.WebRequest]::Create("https://google.com")
$request.Method = "GET"
[System.Net.WebResponse]$response = $request.GetResponse()
これはPowerShell Coreで削除されているようです。
Nano Server for Windows 2016で実行されているDocker for Windowsでこれが機能しない理由を探しています。
コマンドで-UseBasicParsingオプションを使用すると機能します。以下はコマンドのドキュメントの一部です
-UseBasicParsing
コマンドレットが、Document Object Model(DOM)解析なしでHTMLコンテンツの応答オブジェクトを使用することを示します。
このパラメーターは、Windows ServerオペレーティングシステムのServer Coreインストールなど、コンピューターにInternet Explorerがインストールされていない場合に必要です。
Invoke-WebRequestはPowerShell 5から削除されました。
PowerShell 5の古いInvoke-WebRequestと同じように機能するInvoke-FastWebRequestという関数の実装を次に示します。 https://github.com/cloudbase/unattended-setup-scripts/blob/master/FastWebRequest.psm1