Powershell &引用;远程服务器返回错误:(401)Unauthorized";
我正在尝试验证我的URL是否得到响应。 换句话说,我试图检查身份验证是否已成功接近该站点 我用过:Powershell &引用;远程服务器返回错误:(401)Unauthorized";,powershell,httpresponse,Powershell,Httpresponse,我正在尝试验证我的URL是否得到响应。 换句话说,我试图检查身份验证是否已成功接近该站点 我用过: $HTTP_Request=[System.Net.WebRequest]::Create('http://example.com') $HTTP\u Response=$HTTP\u Request.GetResponse() $HTTP\u Status=[int]$HTTP\u Response.StatusCode 如果($HTTP_Status-eq 200){ 写主机“站点正常!” }
$HTTP_Request=[System.Net.WebRequest]::Create('http://example.com')
$HTTP\u Response=$HTTP\u Request.GetResponse()
$HTTP\u Status=[int]$HTTP\u Response.StatusCode
如果($HTTP_Status-eq 200){
写主机“站点正常!”
}否则{
写主机“站点可能已关闭,请检查!”
}
$HTTP_Response.Close()
我得到了回应:
远程服务器返回错误:(401)未经授权
但在那之后我得到了:
网站还可以
这是不是意味着没事?如果没有,怎么了?我认为会发生以下情况: 您正在尝试使用GetResponse()查询网页。此操作失败,因此以下语句使用您在上一次运行中设置的值运行。这将导致您描述的输出
我个人倾向于在脚本中使用invokewebrequest。这使得处理错误变得更容易,因为它支持所有常见参数,如Erroraction等。您正在恢复正常,因为您重新运行了命令,并且
$HTTP\u Response
包含了上一次成功运行的对象。结合使用try/catch和正则表达式提取正确的状态代码(并清理变量):
$HTTP\u响应=$null
$HTTP_Request=[System.Net.WebRequest]::Create('http://example.com/')
试一试{
$HTTP\u Response=$HTTP\u Request.GetResponse()
$HTTP\u Status=[int]$HTTP\u Response.StatusCode
如果($HTTP_Status-eq 200){
写主机“站点正常!”
}
否则{
写入主机(“站点可能正常,状态代码:”+$HTTP\U状态)
}
$HTTP_Response.Close()
}
抓住{
$HTTP_Status=[regex]::matches($\uu.exception.message),(?我试图使用invoke webrequest,但不断收到错误:“未识别为cmdlet的名称”-例如:$r=invoke webrequest,谢谢,这很有帮助。您会这样说吗?错误401(未经授权)表示站点已加密?意味着kerberos委派不允许我访问?或者在其他地方有错误?401并不意味着站点已加密,而您未通过身份验证。kerberos只会在浏览器中自动传递您的凭据,对于PS构造,请尝试此方法以解决身份验证问题:好的,谢谢,我是通过我的证书,它说它已连接。