Доступ к сети через Powershell и прокси
Я не могу получить доступ к веб-странице, используя Powershell. Я продолжаю получать "(407) прокси-аутентификацию". Я много пробовал. Я не знаю, что такое прокси-сервер или какая аутентификация требуется. Единственное, к чему я имею доступ, - это IE, который использует script для настройки. Я попытался использовать некоторые IP-адреса, но не повезло. Есть идеи?
Вот один пример того, что я пробовал:
$wc = New-Object System.Net.WebClient
$wc.Headers.Add("User-Agent","Mozilla/4.0+")
$wc.Proxy = [System.Net.WebRequest]::DefaultWebProxy
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
$wc.DownloadString("http://stackoverflow.com")
Ответы
Ответ 1
У меня была аналогичная проблема и разрешил ее только с двумя строками powershell:
$browser = New-Object System.Net.WebClient
$browser.Proxy.Credentials =[System.Net.CredentialCache]::DefaultNetworkCredentials
Надеюсь, что это поможет.
Ответ 2
Если прокси-сервер отвечает "407", требуется "аутентификация прокси", тогда требуется аутентификация:
$Username="Hugo"
$Password="abcdefgh"
$WebProxy = New-Object System.Net.WebProxy("http://webproxy:8080",$true)
$url="http://aaa.bbb.ccc.ddd/rss.xml"
$WebClient = New-Object net.webclient
$WebClient.Proxy=$webproxy
$WebClient.proxy.Credentials = New-Object System.Net.NetworkCredential($Username, $Password)
$path="C:\Users\hugo\xml\test.xml"
$WebClient.DownloadFile($url, $path)
Содержимое теперь находится в "test.xml"
Ответ 3
Я не видел, чтобы кто-то делал что-то подобное, но есть способ сделать это как "глобальную настройку" в вашей Powershell script (я помню, как это делал на С# раньше для локальных сборщиков dev).
[System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
Таким образом, если вы не хотите обновлять все свои веб-клиенты с помощью сведений о прокси-сервере, вы можете просто переопределить глобальные настройки (это нужно делать каждый раз при запуске script).
Но это предполагает, что текущий зарегистрированный пользователь Windows действителен для системного прокси-сервера.
ПРИМЕЧАНИЕ. Я бы сказал, что это полезно только для быстрого и грязного способа работы PS script, который ранее не был прокси-сервером (например, Создание торта).
Ответ 4
Если вы используете следующее, вы получите приглашение ввести свои учетные данные:
$client.Credentials = Get-Credential
Ответ 5
Если вы знаете script - просто загрузите его, откройте "Блокнот" и найдите IP-адрес и порт вашего прокси-сервера. Что касается аутентификации, то, скорее всего, используются ваши учетные данные Windows, поэтому теоретически вы должны быть в состоянии сохранить его пустым, если в script нет подозрений.
Ответ 6
попробуйте добавить учетные данные кэша....
$domain = 'ChDom'
$Client = new-object System.Net.WebClient
$cc = New-object System.Net.CredentialCache
$urlObj = New-object System.Uri($url)
#these variables must be plaintext strings
$creds = New-object System.Net.NetworkCredential($Username,$Password)
#your auth might be different than mine
$cc.add($urlobj,"NTLM",$creds)
$client.Credentials = $cc
$Client.Downloadfile($url, C:\Temp\TestPage.html)