#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