マシンのリストをループ処理し、そのマシンに関するさまざまな情報を返すスクリプトを作成しています。私が返すものの 1 つは、WMI から取得した Dell サービス タグです。次に、サービス タグを使用してNew-WebServiceProxy
オブジェクトを作成し、Dell からさまざまな保証情報を返します。スクリプトは最初は正常に実行されますが、しばらくして Dell にリクエストすると、次のエラーが発生し始めます。
New-WebServiceProxy : The request failed with HTTP status 401: Authorization Required.
At C:\..\..\..\ServerInfo.ps1:68 char:15
+ $service = New-WebServiceProxy -Uri http://xserv.dell.com/services/assetservi ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (http://xserv.de...rvice.asmx?WSDL:Uri) [New-WebServiceProxy], WebExcept
ion
+ FullyQualifiedErrorId : WebException,Microsoft.PowerShell.Commands.NewWebServiceProxy
なぜこのエラーが発生しているのか理解できないようです。いくつかの調査を行ったところ、通常このエラーに遭遇する人は、呼び出しを行っている Web サービスにログインしていないことがわかりました。この Web サービスは、いかなる種類の認証も必要としません! 長時間正常に動作し、その後エラーになるのはなぜですか? 多くのリクエストに送信するかのように、発信する呼び出しの量を制限しようとしましたが、各呼び出しの間に 2 分間待っても、最終的にはエラーになります。
このエラーの原因となったコード ブロックは次のとおりです。
$STAG = "XXXXXXX" #サービスタグ $WebProxy = New-WebServiceProxy -Uri http://xserv.dell.com/services/assetservice.asmx?WSDL $GUID = [GUID]::NewGuid() $Return = $WebProxy.GetAssetInformation($GUID,'CheckWarranty',$STAG) $Return[0].Entitlements[0].ServiceLevelDescription.ToString()
だから私が求めているのは、なぜこのエラーが発生するのかということです。非常に多くのリクエストの後、認証は必要ないのに、なぜ認証が必要だと言っているのですか?