当前位置:  开发笔记 > 编程语言 > 正文

如何在Powershell中进行经过身份验证的Web请求?

如何解决《如何在Powershell中进行经过身份验证的Web请求?》经验,为你挑选了2个好方法。

在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?



1> Steven Muraw..:

PowerShell几乎完全相同.

$webclient = new-object System.Net.WebClient
$webclient.Credentials = new-object System.Net.NetworkCredential($username, $password, $domain)
$webpage = $webclient.DownloadString($url)


请注意,如果您只想使用当前的登录凭据(例如,访问Intranet上经过身份验证的服务器),您可以使用`$ webclient.UseDefaultCredentials = $ true`(如[Ralph的回答](http:// stackoverflow). COM /一个/一百四十四万三千四百九十六分之一千二百四十二万一千零七十五)).

2> Ralph Willgo..:

对于需要Powershell返回其他信息的人,比如Http StatusCode,这是一个例子.包括两种最有可能传递凭证的方法.

它是这个SO答案的略微修改版本:
如何在PowerShell中获取数字HTTP状态代码

$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"


我可能错了,但我不得不用`$ passwd = ConvertTo-SecureString"nowisthetime4U"替换`new NetworkCredential`'AsPlainText -Force;`后跟`$ request.Credentials = New-Object System.Management.Automation.PSCredential( "pwatson_at_phs_org",$ passwd);`
出色的附加答案,这实际上正是我想要的。
推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有