任何人都知道如何修改下面的DownloadString,以便我也可以传递基本的身份验证凭证吗?
我使用与PsGet(http://psget.net/)相同的技术来下载我自己的内部脚本并动态执行它们。但是我的服务器使用基本身份验证进行保护。我在应用凭据时仍然无法使用Invoke-Expression执行该行。
我在一行中需要它,因为我正在使用" powershell.exe执行它 - 命令..."
(new-object Net.WebClient).DownloadString(" http://psget.net/GetPsGet.ps1")| IEX
答案 0 :(得分: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
答案 1 :(得分: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中的凭证字符串未加密。