web-dev-qa-db-ja.com

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"
    }
}
3
Ralph Jansen

上記のスクリプトによると、必要なキーを再調整しました。

間違ったキーを設定しています。これを試してください:

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

このキーについて:

HKEY_USERS\S-1-5-18

そして、あなたは黄金であるべきです!

2
Collin Chaffin

エンコードされた構成方法

構成全体はシステムによってバイナリ値としてエンコードされ、配列のDefaultConnectionSettingsレジストリ値の下に格納されます。

利点:

  • 処理するレジストリ値は1つだけです

欠点:

  • 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
}
1
Luke

明示的な設定方法

構成は、いくつかのレジストリ値の組み合わせです。

利点:

  • 設定は人間が読める形式です。
  • 設定はすべてのユーザーに一度に適用できます。

欠点:

  • 設定を自動検出設定を有効または無効にするレジストリ値はありません

  • 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

  • LANにプロキシサーバーを使用
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 = 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>

  • ローカルアドレスにはプロキシサーバーを使用しないおよび次で始まるアドレスにはプロキシサーバーを使用しない
HKLM:\ Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyOverride = FQDNリスト

例: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
1
Luke