Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell &引用;远程服务器返回错误:(401)Unauthorized";_Powershell_Httpresponse - Fatal编程技术网

Powershell &引用;远程服务器返回错误:(401)Unauthorized";

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){ 写主机“站点正常!” }

我正在尝试验证我的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_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构造,请尝试此方法以解决身份验证问题:好的,谢谢,我是通过我的证书,它说它已连接。