我正在尝试使用"start- bittransfer " cmdlet自动下载一些文件,但我应该使用代理。
当我使用"get-credentials"时没有问题下载文件没有问题,但是我想避免提示当前用户会话。$ mycred = get-credentialstart - bittransfer -proxyusage override -proxylist @("myproxy.com:8080") -proxycredential $mycred -Proxyauthentication Ntlm http://go.microsoft.com/fwlink/?LinkId=76054 . wsusscn1 .cab
但是当我试图使用defaultcredentials来避免提示它时美元mycred = [System.Net。DefaultCredentials CredentialCache]::
我得到与"用户名"相关的错误,像这样:start - bittransfer:无法处理参数"ProxyCredential"的参数转换。用户名
如何使用默认用户会话凭据?我还尝试过其他一些将凭据传递给代理的示例,但都不起作用。任何建议吗?
对
似乎Start-BitsTransfer
无法使用默认凭证,因为底层的。net方法处理异步文件传输。
如果Start-BitsTransfer
不是硬性要求,我推荐WebClient
。
创建$global:webClient
对象的函数;
function Set-WebClient {
if(!($global:webClient)){
try { $global:webClient = New-Object System.Net.WebClient }
catch { $M="WebC: Unable to setup WebClient" ; write-output $M }
if($global:webClient){
try { $global:webClient.Proxy = [System.Net.WebRequest]::DefaultWebProxy }
catch { $M="WebC: Unable to set WebClient Proxy" ; write-output $M }
if($global:webClient.Proxy){
try { $global:webClient.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials }
catch { $M="WebC: Unable to set WebClient Proxy Credentials for Authorization " ; write-output$M }
}
}
}
} ## end function Set-WebClient
现在调用函数,然后让。net对象下载文件。
Set-WebClient
$url = "http://go.microsoft.com/fwlink/?LinkId=76054"
$output = "$((Get-Location).Path)wsusscn2-$($DT).cab"
$webClient.DownloadFile($url,$output) ## downloads the file