在C#中,我可能会这样做:
System.Net.WebClient w = new System.Net.WebClient();
w.Credentials = new System.Net.NetworkCredential(username, auth, domain);
string webpage = w.DownloadString(url);
是否有Powershell版本,或者我应该拨打CLR?
答案 0 :(得分:66)
PowerShell几乎完全相同。
$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)
$webpage = $webclient.DownloadString($url)
答案 1 :(得分:26)
对于那些需要Powershell来返回Http StatusCode等附加信息的人来说,这是一个例子。包括两种最有可能传递凭证的方式。
这个SO答案的略微修改版本:
How to obtain numeric HTTP status codes in PowerShell
$req = [system.Net.WebRequest]::Create($url)
# method 1 $req.UseDefaultCredentials = $true
# method 2 $req.Credentials = new NetworkCredential($username, $pwd, $domain);
try
{
$res = $req.GetResponse()
}
catch [System.Net.WebException]
{
$res = $_.Exception.Response
}
$int = [int]$res.StatusCode
$status = $res.StatusCode
return "$int $status"
答案 2 :(得分:2)
在某些情况下,如果给出正确的凭据,NTLM身份验证仍然无效。
有一种机制会使WebClient中的NTLM auth无效,请参阅此处以获取更多信息:System.Net.WebClient doesn't work with Windows Authentication
如果您正在尝试上述答案并且仍然无效,请按照上述链接添加注册表以将域列入白名单。
发布此处以节省其他时间;)