Назад | Перейти на главную страницу

Установите прокси для всех пользователей и системных учетных записей на Windows Server

Мы пытаемся развернуть шаблон ARM для Azure. Мы хотим установить прокси для всех пользователей и системных учетных записей. Но мы не можем этого сделать. Когда мы используем этот сценарий PowerShell, у текущего пользователя есть прокси, но нет системной учетной записи. Какие-либо предложения?

<#
.Synopsis
This function will set the proxy settings provided as input to the cmdlet.
.Description
This function will set the proxy server and (optinal) Automatic configuration script.
.Parameter ProxyServer
This parameter is set as the proxy for the system.
Data from. This parameter is Mandatory
.Example
Setting proxy information
Set-InternetProxy -proxy "proxy:7890"
.Example
Setting proxy information and (optinal) Automatic Configuration Script 
Set-InternetProxy -proxy "proxy:7890" -acs "http://proxy:7892"
#>

#[CmdletBinding()]
Param(        
    [Parameter(Mandatory=$True,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
    [String[]]$Proxy,

    [Parameter(Mandatory=$False,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)]
    [AllowEmptyString()]
    [String[]]$acs      
)

Begin
{
    $regKey="HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings"        
}    
Process
{        
    Set-ItemProperty -path $regKey ProxyEnable -value 1
    Set-ItemProperty -path $regKey ProxyServer -value $proxy

    if($acs) 
    {            
        Set-ItemProperty -path $regKey AutoConfigURL -Value $acs          
    }

    #$obj = Get-ItemProperty -Path Registry::”HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections"
    #Set-ItemProperty -Path Registry::”HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" -Name DefaultConnectionSettings -Value $obj.DefaultConnectionSettings
    #Set-ItemProperty -Path Registry::”HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections" -Name SavedLegacySettings -Value $obj.SavedLegacySettings
    #$obj = Get-ItemProperty -Path Registry::”HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings"
    #Set-ItemProperty -Path Registry::”HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name ProxyEnable -Value $obj.ProxyEnable
    #Set-ItemProperty -Path Registry::”HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings" -Name Proxyserver -Value $obj.Proxyserver
}     
End
{
    Write-Output "Proxy is now enabled"
    Write-Output "Proxy Server : $proxy"

    if ($acs)
    {
        Write-Output "Automatic Configuration Script : $acs"
    }
    else
    {
        Write-Output "Automatic Configuration Script : Not Defined"
    }
}

В соответствии с приведенным выше сценарием вы заменили нужные вам ключи.

Вы устанавливаете неправильный ключ. Попробуй это:

Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\DefaultConnectionSettings

По этому ключу:

HKEY_USERS\S-1-5-18

И ты должен быть золотым!

Явный метод настройки

Конфигурация представляет собой комбинацию нескольких значений реестра.

Преимущество:

  • Конфигурация удобочитаема.
  • Конфигурация может быть применена ко всем пользователям сразу.

Недостаток:

  • Нет значения реестра для включения или отключения Автоматически определять настройки установка

  • Если вы используете PowerShell, вы должны убедиться, что родительские разделы реестра существуют, и проверить, существуют ли совпадающие значения, прежде чем вы сможете установить данные. Например, если вы хотите установить значение AutoConfig, вы должны сначала создать раздел реестра панели управления (если он не существует), иначе вы получите сообщение об ошибке.

Значения конфигурации:

Заметка

Значения, расположенные под
HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings
также должен быть установлен в
HKLM:\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings

  • Использовать сценарий автоматической настройки
HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL = URL

Пример: http://proxy.mydomain.com/proxy.pac

  • Используйте прокси-сервер для вашей локальной сети
HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable = 0|1
  • Адрес прокси для использования и Используйте один и тот же прокси-сервер для всех протоколов проверил
HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer = URL:PortNumber

Пример: http://proxy.mydomain.com:80

  • Используйте один и тот же прокси-сервер для всех протоколов не отмечен
HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyServer = List of URL:PortNumber

Пример: http://proxy.mydomain.com:80;https://proxy.mydomain.com:443;ftp://ftp.mydomain.com:21

  • Обход прокси-сервера для локальных адресов и НИЧЕГО в Не используйте прокси-сервер для адресов, начинающихся с
HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride = <LOCAL>

Пример: <LOCAL>

  • Обход прокси-сервера для локальных адресов и ЧТО-ТО в Не используйте прокси-сервер для адресов, начинающихся с
HKLM:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride = FQDN list

Пример: Mydomain.com;AnotherDomain.com

Область применения:

  • Примените конфигурацию прокси ко всем пользователям
HKLM:\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\ProxySettingsPerUser = 0|1
  • Запретить пользователям изменять конфигурацию прокси
HKLM:\Software\Policies\Microsoft\Internet Explorer\Control Panel\Proxy = 0|1

Закодированный метод конфигурации

Вся конфигурация кодируется системой как двоичные значения и сохраняется в массиве под DefaultConnectionSettings значение реестра.

Преимущество:

  • У вас есть только одно значение реестра для обработки

Недостаток:

  • Вы должны создать свою конфигурацию с существующей учетной записью пользователя, чтобы получить DefaultConnectionSettings
  • Вы должны применять его индивидуально к каждому пользователю

1. установите Настройки соединения как вы хотите в текущем сеансе пользователя

2. Получить соответствующее значение Настройки соединения из Пользователь, вошедший в систему

Get-ItemPropertyValue -Path 'HKCU:\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections' -Name 'DefaultConnectionSettings'

3. Обновите первую строку этого кода с предыдущим результатом, чтобы установить те же настройки на Системная учетная запись

#This is the new connection settings you want to apply
$DefaultConnectionSettings = [byte[]](70,0,0,0,6,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,39,0,0,0,104,116,116,112,115,58,47,47,119,101,98,112,114,111,120,121,46,109,121,100,111,109,97,105,110,46,99,111,109,47,112,114,111,120,121,46,112,97,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)

#This is the key of the LOCAL SYSTEM account
$IESettingsKey = 'Registry::HKEY_USERS\S-1-5-18\Software\Microsoft\Windows\CurrentVersion\Internet Settings'

$IEConnectionsKey = Join-Path -Path $IESettingsKey -ChildPath 'Connections'

#If the Connection subkey does not exist, create the subkey
If(-not(Test-Path -Path $IEConnectionsKey)){
    New-Item -Path $IESettingsKey -Name 'Connections'
}

try{
    #If the DefaultConnectionSettings already exists, set it with the new value
    $Null = Get-ItemPropertyValue -Path $IEConnectionsKey -Name 'DefaultConnectionSettings'
    Set-ItemProperty -Path $IEConnectionsKey -Name 'DefaultConnectionSettings' -Value $DefaultConnectionSettings
}
catch{
    #If the DefaultConnectionSettings does not exist, create it with the new value
    New-ItemProperty -Path $IEConnectionsKey -Name 'DefaultConnectionSettings' -Value $DefaultConnectionSettings -PropertyType Binary
}