どうもミツシマです。

今回はネットワーク設定の「IPv6」のチェックを外す(無効化) をPowershellコマンドにて出来るか検証してみました。

ここの項目↓
スクリーンショット 2019-07-02 5.34.08



検証環境は以下の通り
PC:Windows10 1809


検証としては成功!!!
スクリプトはこんな感じになりました。

#スクリプトのパス取得
$ScriptFullPath = $MyInvocation.MyCommand.Path

#管理者として実行しているかを確認し、管理者で実行されていなければ、管理者として再実行する
$WindowsPrincipal = [Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()
if (-Not($WindowsPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))){
    Write-Output "管理者として実行されていません。再度管理者で実行します。"
    Start-Process powershell.exe -ArgumentList "-ExecutionPolicy RemoteSigned -command $ScriptFullPath" -Verb runas
    Exit
}

#IPv6機能のあるネットワークアダプタをすべて取得
$IPv6NetAdapterList = Get-NetAdapterBinding | Where-Object {$_.ComponentID -eq "ms_tcpip6"}

#取得したすべてのネットワークアダプタでIPv6のチェックをオフにする
foreach($List in $IPv6NetAdapterList){
    
    Disable-NetAdapterBinding -Name $List.Name -ComponentID "ms_tcpip6"
    Write-Host ('[' + $List.Name + ']のIPv6を無効にしました')

}

Pause



〜解説〜
はじめに管理者権限として実行しているかを確認し、実行していなければ改めて「管理者として実行」させる。(この辺りはいつもどおり)
そして「Get-NetAdapterBinding」にてネットワークアダプタの情報を取得し、その中でIPv6機能があるネットワークアダプタのみを変数に入れる。
あとは「Disable-NetAdapterBinding」コマンドにて取得したすべてのネットワークアダプタでIPV6機能を無効化して終了。
特定のアダプタのみ無効化したい時はネットワークアダプタの名前などで更に絞る必要があるが、今回は手間だったのですべて無効化しました。
実際も全部無効化するケースの方が多そうだと個人的に思うし。
今回はチェックを外すだけでIPv6コンポーネント自体の無効化はしていない。する必要があれば別途レジストリ設定やコマンド実行が必要になるので注意!!


昔からの癖でIPv6のチェックを外すことが多いがそろそろ何かしらの影響が出てくるのだろうか・・・・
マイクロソフトとしても無効化せずに優先順位をIPv4優先にすることを推奨しているようだが、なにせレジストリの値になるので後から確認しづらい項目なんだよね。。。( ・Д・)
スポンサードリンク