我正在编写一个脚本,该脚本循环遍历机器列表并返回有关该机器的各种信息。我返回的其中一件事是从 WMI 中提取的戴尔服务标签。然后,我使用服务标签并创建一个New-WebServiceProxy
对象以从戴尔返回各种保修信息。该脚本一开始会运行良好,但过了一段时间当我向戴尔提出请求时,它开始出现以下错误:
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 服务不需要任何形式的身份验证!为什么它工作了这么久然后就出错了?我已经尝试限制我拨打的电话数量,就好像我要发送很多请求一样,但即使在每次通话之间等待两分钟,它最终仍然会出错。
这是导致此错误的代码块:
$STAG = "XXXXXXX" #ServiceTag $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()
所以我要问的是为什么在这么多请求之后会出现这个错误不需要身份验证,那么为什么告诉我它需要身份验证?