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
そして、あなたは黄金であるべきです!
構成全体はシステムによってバイナリ値としてエンコードされ、配列の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
}
構成は、いくつかのレジストリ値の組み合わせです。
設定を自動検出設定を有効または無効にするレジストリ値はありません
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 = 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