Доступ к сети через 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)