При автоматизации сборок Windows (2012R2 и 2016) я обнаружил, что, хотя я установил общесистемный прокси-сервер с помощью netsh, мне все равно пришлось установить значения HKCU для IE, поскольку некоторые команды не будут работать без этих установленных значений.Мне бы пришлось открыть IE и посетить сайт, любой сайт, чтобы инициализировать эти настройки, что раздражало.
Мне удалось найти некоторый код PowerShell, который мог бы «инициализировать» настройки прокси IE, поэтому я не сталнеобходимо открыть IE и посетить сайт, показанный ниже:
$Source=@"
[DllImport("wininet.dll")]
public static extern bool InternetSetOption(int hInternet, int dwOption, int lpBuffer, int dwBufferLength);
"@
$wininet = Add-Type -memberDefinition $Source -passthru -name InternetSettings
$wininet::InternetSetOption([IntPtr]::Zero, 95, [IntPtr]::Zero, 0)|out-null
$wininet::InternetSetOption([IntPtr]::Zero, 37, [IntPtr]::Zero, 0)|out-null
Код выше https://vanderpaal.com.au/2016/09/30/live-proxy-setting-change/ (спасибо!)
Приведенный выше код отлично работает при выполнении вручнуючерез сеанс RDP.Я правильно установил значения IE proxy, запустил приведенный выше код и затем могу делать все, что захочу - все работает.Команды, для которых требуются настройки IE, работают нормально.
Я пытался запустить больше кода через удаленный WinRM, используя такие вещи, как Ansible и SSM (в AWS).Когда это происходит, происходят странные вещи.
В частности, записи реестра прокси-сервера IE удаляются и возвращаются к значениям по умолчанию.Итак, порядок действий с помощью сценария:
- Запись значений прокси IE в реестр с помощью сценария, вызываемого Ansible или SSM.
- Запустите код прокси инициализации, указанный выше.
- Значения IE из # 1 пропали ...
Я затрудняюсь понять, почему значения реестра удаляются.Я на 100% уверен, что они будут удалены - я могу написать запрос reg до и после инициализации прокси-команд - до команд, которые они существуют, и после команд, которых они не делают.Этого не происходит, когда я запускаю одни и те же сценарии вручную на сервере в сеансе RDP, то есть команда прокси НЕ удаляет записи.
Я повторил это как в Ansible, так и в SSM, оба из которыхиспользуйте PowerShell и WinRM для запуска команд.Сценарии находятся на реальном сервере, и Ansible / SSM говорит системе выполнить сценарии.
Я проверил, что HKCU действительно существует во время Ansible выполнения сценариев.
Поскольку значения IEКогда меня удаляют, команда initialize бесполезна, когда выполняются следующие команды, требующие значений IE.Эти команды завершаются с ошибками, такими как:
PackageManagement \ Install-Package: Не найдено совпадений для указанных критериев поиска и имени модуля ''
Команды, которые я выполняю (которые не выполняются):просто установите команды модуля следующим образом:
Install-Module -Name PSWindowsUpdate -Proxy http://proxy.foo.com:80 -Confirm:$false -Force
Install-Module -Name PowerShellGet -Proxy http://proxy.foo.com:80 -Confirm:$false -Force
Кто-нибудь знает, почему значения реестра IE proxy удаляются, когда я запускаю приведенный выше код через Ansible или SSM?Рассматриваемые значения прокси:
"HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ProxyEnable" - это сбрасывается до 0
"HKCU \ Software \ Microsoft \ Windows \"CurrentVersion \ Internet Settings \ ProxyServer "- это удаляется
" HKCU \ Software \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ ProxyOverride "- это удаляется