1

我正在尝试使用“start-bitstransfer”cmdlet 自动下载一些文件,但我应该使用代理。

文我使用“get-credentials”没有问题下载文件没有问题,但我想避免提示当前用户会话。$mycred=get-credential Start-BitsTransfer -proxyusage override -proxylist @("myproxy.com:8080") -proxycredential $mycred -Proxyauthentication Ntlm http://go.microsoft.com/fwlink/?LinkId=76054 .\wsusscn2 。出租车

但是当我尝试使用 defaultcredentials 来避免提示它时 $mycred= [System.Net.CredentialCache]::DefaultCredentials

我收到与“用户名”相关的错误,如下所示:Start-BitsTransfer:无法处理参数“ProxyCredential”的参数转换。用户名

如何使用默认用户会话凭据?我已经尝试使用我见过的其他示例将凭据传递给代理,但没有一个有效。有什么建议吗?

问候

4

1 回答 1

0

由于处理异步文件传输的底层 .NET 方法,似乎Start-BitsTransfer无法使用默认凭据。

如果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
于 2017-06-27T21:48:15.547 回答