Bar

PowerShell IEのポップアップ ブロック 許可サイトを制御してみた

Internet Explorerのポップアップ ブロックの設定に「許可サイトの追加・削除」があり、複数端末で同一の設定を行うためにはどうすればいいか考えてみました。
レジストリを書いたバッチファイルが現実的だと思いますが、現在勉強中のPowerShellからIEのポップアップ ブロック 許可サイトを制御してみたい欲求にかられ、実際に試してみた内容をメモ。
スマートな内容かはさておき、サンプルコードをのせておきます。
ん~いい勉強になりました!

許可サイトはレジストリを操作するんですね

先人の方々のお知恵をお借りしながら、自分なりに調べてみました。
IEのポップアップ ブロックの有効/無効、および、許可サイトの管理はレジストリを使っています。
  • ポップアップブロックの有効/無効
    パス:HKCU\Software\Microsoft\Internet Explorer\New Windows
    値:PopupMgr
    データ:有効の場合はyes、0x00000001。無効は0x00000000
    image
    image
    ※yesの状態から無効→有効にしたところ、16進数になりました。
    Technetの記事「イベント 1027 - ポップアップ ブロック」にはyesになってますね。
  • 許可サイトの追加・変更・削除
    パス:HKCU\Software\Microsoft\Internet Explorer\New Windows\Allow
    値:サイトURL
    種類:バイナリ
    データ:0x00000000, 0x00000000
    image

PowerShellからIEの「許可されたサイト」を追加してみた

PowerShellからIEの「許可されたサイト」を追加するためには、前述のとおりレジストリを操作します。
下記は(内容がいい・悪いは別とし、)私が書いたサンプルコードです。
※動作環境は、Windows 7 Professional 64bit、IE10です。
キモは、New-ItemPropertyのValue[0x00000000, 0x00000000]です。
最初、記述方法が全く分からなかったので試行錯誤しました。
もし、複数の許可サイトを追加したいのであればNew-ItemPropertyを複数回実行すればいいと思います。XMLファイルやCSVファイル等を読み込んで処理すれば簡単でしょう。
#OSチェック ~Windows 7より前は処理を停止
$os = [environment]::OSVersion.Version
if($os.Major -lt 6){
    Write-Output 'Windows 7以上でお使いください。'
    exit
}

#変数
$path = "HKCU:\Software\Microsoft\Internet Explorer\New Windows"
$path2 = "${path}\Allow"
$addUrl = "許可したいサイト"

#ポップアップ・ブロックをチェック、有効の場合はURLを追加
$PopupMgr = $(Get-ItemProperty -Path $Path -Name 'PopupMgr').PopupMgr
if($PopupMgr -eq 'yes' -or $PopupMgr -eq 0x00000001){
    #レジストリの修正
    #Set-ItemProperty -Path $path -Name 'PopupMgr' -Value 0x00000001
    
    #許可サイトがなければ、サイトを追加
    if($(Get-ItemProperty -Path $path2 -Name $addUrl).$addUrl -ne 0){
        New-ItemProperty -Path $path2 -Name $addUrl -Value 0x00000000, 0x00000000 -PropertyType binary
    }
    else{
        Write-Output "${addUrl}はすでに存在しています。"
    }
}
余談:Windows XPの場合、レジストリのデータは若干異なるのか~
今回はWindows 7以上に絞ってみましたが、来年サポートが切れるWindows XPの場合はどうなのか調べてみました。
レジストリを確認してみたところ、許可サイトのデータはWindows 7と異なっています。
長さ0のバイナリ値になっていますね。
2013-09-26_153302
2013-09-26_153057
image