在宅勤務の賜物。
在宅で社給端末を立ち上げる時に、社内とはネットワーク設定が当然違うので、プロキシ設定のチェックを外す必要がある。
指示ではIEを立ち上げて、インターネットオプションを開いて設定を外せ(そして社内で使う時は設定を入れ直せ)とのことで、正直くそめんどくさい
まぁ色んな環境が並立し過ぎてて情シス部門に速やかに全てをフォローした決定版を出せというのも酷なのですが、事情を斟酌したところで面倒くさいものが面倒くさくなるわけでもなく。
どれぐらいめんどくさいかというと[削除済み]
というわけで呼び出しのバッチファイル。
powershell .\iex-proxy-switch.ps1
本体はこう。(ちょっとフォーマッターにかけて微調整)
Add-Type -AssemblyName PresentationFramework
[xml]$xaml = @'
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="InternetExploer Proxy Switch"
Height="130" Width="250" ResizeMode="NoResize">
<StackPanel>
<StackPanel Orientation="Horizontal">
<TextBlock Text="LANにプロキシサーバーを利用する:" />
<TextBlock Name="statusTextBlock" Text="" />
</StackPanel>
<Button Name="switchButton" Content="Switch" IsDefault="True" Margin="0,10,0,0" />
<Button Name="exitButton" Content="Exit" IsDefault="True" Margin="0,10,0,0" />
</StackPanel>
</Window>
'@
function GetIexProxySetting {
$flag = ( Get-ItemProperty -Path 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\' | Select-Object -Property ProxyEnable ).ProxyEnable
if ( $flag -eq 0 ) {
return $false
}
else {
return $true
}
}
function GetSwitchText {
if ( GetIexProxySetting ) {
return "ON"
}
else {
return "OFF"
}
}
$reader = (New-Object System.Xml.XmlNodeReader $xaml)
$window = [Windows.Markup.XamlReader]::Load($reader)
$textbox = $window.FindName("statusTextBlock")
$textbox.Text = GetSwitchText
$btn1 = $window.FindName("switchButton")
$btn2 = $window.FindName("exitButton")
$btn1_clicked = $btn1.add_Click
$btn1_clicked.Invoke( {
if ( GetIexProxySetting ) {
Set-ItemProperty -Path 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\' -Name ProxyEnable -Value 0
}
else {
Set-ItemProperty -Path 'Registry::HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\' -Name ProxyEnable -Value 1
}
$textbox.Text = GetSwitchText
})
$btn2_clicked = $btn2.add_Click
$btn2_clicked.Invoke( {
$window.Close()
})
$window.ShowDialog() > $null
もっと綺麗に書けるとは思うがとりあえずのメモ書きとして。