PowerShell: Как указать PowerShell использовать прокси-сервер для web запросов?
При реализации задач по автоматизации, бывает необходимо предварительно выполнять запросы в сеть Интернет. При этом, если с машины не разрешен выход в сеть Интернет, а настройки прокси-сервера для пользователя из-под которого выполняется скрипт не прописаны, то выполнение запросов в Интернет будет завершаться ошибкой: Unable to connect to the remote server.
Для выхода из этой ситуации, в PowerShell можно настроить использование прокси-сервера для веб-запросов несколькими способами, в зависимости от контекста:
Проверить текущие настройки прокси:
Для выхода из этой ситуации, в PowerShell можно настроить использование прокси-сервера для веб-запросов несколькими способами, в зависимости от контекста:
1. Для модуля Invoke-WebRequest / Invoke-RestMethod
Эти cmdlets используют системные настройки прокси по умолчанию, но можно явно указать прокси:$proxy = "http://proxy.example.com:8080"
$proxyCred = Get-Credential # Если требуется аутентификация
Invoke-WebRequest -Uri "https://example.com" -Proxy $proxy -ProxyCredential $proxyCred
2. Для всех веб-запросов через [System.Net.WebRequest] (например, в .NET-скриптах)
[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://proxy.example.com:8080", $true)
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
или с явными учетными данными:$proxyCred = New-Object System.Net.NetworkCredential("username", "password", "domain")
[System.Net.WebRequest]::DefaultWebProxy.Credentials = $proxyCred
3. Через переменные окружения
PowerShell (и многие другие программы) учитывают переменные HTTP_PROXY и HTTPS_PROXY:$env:HTTP_PROXY = "http://proxy.example.com:8080"
$env:HTTPS_PROXY = "http://proxy.example.com:8080"
Если прокси требует аутентификации:$env:HTTP_PROXY = "http://username:password@proxy.example.com:8080"
4. Для Package Manager (NuGet, PowerShellGet)
Если нужно настроить прокси для Install-Package или Install-Module:[System.Net.WebRequest]::DefaultWebProxy = New-Object System.Net.WebProxy("http://proxy.example.com:8080")
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials
Или через nuget.config:<configuration>
<config>
<add key="http_proxy" value="http://proxy.example.com:8080" />
<add key="http_proxy.user" value="username" />
<add key="http_proxy.password" value="password" />
</config>
</configuration>
Проверить текущие настройки прокси:
[System.Net.WebRequest]::GetSystemWebProxy().GetProxy("http://example.com")
Если нужно отключить прокси в PowerShell:
[System.Net.WebRequest]::DefaultWebProxy = $null
$env:HTTP_PROXY = $null
$env:HTTPS_PROXY = $null
Похожие статьи:
18 июнь 2024, Вторник
Долгое выполнение команды Import-Module
02 апрель 2021, Пятница
Linux: Пошаговая инструкция по установке Debian 10
22 сентябрь 2022, Четверг
IIS: Установка IIS ARR + URL Rewrite на Windows Server 2019
17 март 2021, Среда
Linux: Как настроить прокси в CentOS?
22 март 2019, Пятница
Как отправить сообщение в Telegram из PowerShell
Комментарии: