Как использовать использовать учетные данные сеанса по умолчанию для прокси-сервера bitstransfer в powershell

#powershell #proxy #networkcredentials #microsoft-bits #credentialscache

#powershell #прокси #networkcredentials #microsoft-bits #credentialscache

Вопрос:

Я пытаюсь автоматизировать загрузку некоторых файлов с помощью командлета «start-bitstransfer», но я должен использовать прокси.

Когда я использую «get-credentials», проблем с загрузкой файла нет, но я бы хотел избежать запроса текущего сеанса пользователя. $mycred=get-credential Start-BitsTransfer -переопределение proxyusage -proxylist @(«myproxy.com:8080») -proxycredential $mycred -Proxyauthentication Ntlm http://go.microsoft.com/fwlink/?LinkId=76054 .wsusscn2.cab

Но когда я пытаюсь использовать defaultcredentials, чтобы избежать запроса на него $mycred= [System.Net.CredentialCache]::DefaultCredentials

Я получаю ошибку, связанную с «именем пользователя», например: Start-BitsTransfer: не удается обработать преобразование аргумента для параметра ‘ProxyCredential’. Имя пользователя

Как я могу использовать учетные данные сеанса пользователя по умолчанию? Я пробовал с другими примерами, которые я видел, передавать учетные данные прокси, но ни один из них не работал. Есть предложения?

С уважением

Ответ №1:

Похоже, что 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
 

Теперь вызовите функцию, затем выполните .Сетевой объект загружает файл.

 Set-WebClient

$url    = "http://go.microsoft.com/fwlink/?LinkId=76054"
$output = "$((Get-Location).Path)wsusscn2-$($DT).cab"

$webClient.DownloadFile($url,$output) ## downloads the file