1

任何人都知道我可以如何修改下面的 DownloadString 以便我也可以传递基本的身份验证凭据?

我正在使用与 PsGet ( http://psget.net/ ) 相同的技术来下载我自己的内部脚本并即时执行它们。但是,我的服务器使用基本身份验证进行保护。我无法应用凭据并仍在使用 Invoke-Expression 执行该行。

当我使用“powershell.exe -Command ...”执行它时,我需要它在一行中

(new-object Net.WebClient).DownloadString(" http://psget.net/GetPsGet.ps1 ") | 即

4

2 回答 2

3

您不能在一行中执行此操作(好吧,除非您将其包装为 cmdlet),但提供所需的凭据很容易:

$wc = New-Object System.Net.WebClient
$wc.Credentials = New-Object System.Net.NetworkCredential "user","pass"
$wc.DownloadString("http://psget.net/GetPsGet.ps1") | iex
于 2013-04-24T22:03:27.190 回答
0

尝试在 WebClient 上设置授权标头:

$wc = New-Object -TypeName System.Net.WebClient
$cred = 'bob:password'
$enc_cred = [convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($cred))
$wc.Headers.Add("Authorization","Basic $enc_cred")
$wc.DownloadString("http://localhost:81/") | Invoke-Expression

注意 - base64 中的凭据字符串未加密。

于 2013-04-24T22:19:44.070 回答