概要  
コマンドで各種ネットワーク設定の設定や変更をするnetshコマンドのオプションの一つ。Windows XPまたはWindows Server 2003に実装されているWindowsファイアウォールの設定をコマンドで表示,追加,変更,削除する。

 netshコマンドのコマンド・モードとコンテキスト  

バッチ・モード:
通常のコマンドと同様に,コマンド・プロンプトの画面上から1行のコマンドを実行することで,必要な設定を実行するモード。

インタラクティブ・モード:
コマンド・プロンプト上で「netsh」と実行してから,専用のプロンプトで対話的に設定を変更するモード。必要なコンテキストに移動してから,そのコンテキストの設定を対話的に変更する。

スクリプト・モード:
コマンド・プロンプト上で「netsh exec」または「netsh -f」コマンドを使って,事前に用意したスクリプトを実行するモード。バッチ・モードに似ているが、複数の設定変更を1行のコマンドで実行できる。

コンテキストとサブコンテキスト:
netshコマンドは,広汎な設定項目に対応するために「コンテキスト」と呼ぶ設定のための名前空間をもっている。netshプログラム自身の設定をするnetshコンテキストがあり,コンテキストの配下にもコンテキストがある階層的な名前空間となっている。配下のコンテキストはサブコンテキストと呼び,Windows Server 2003 SP1の場合には以下のようなものがある。
(なし) netshプログラム自身の設定
aaaa IAS(RADIUS)サーバーの設定
bridge ネットワーク・ブリッジの設定
dhcp DHCPサーバーの設定
diag ネットワークを検査する設定
firewall Windowsファイアウォールの設定
interface ネットワーク・インタフェースの設定
ipsec IPsecの設定
ras RRASリモート・アクセスの設定
routinig RRASルーティングの設定
rpc リモート・プロシージャ・コールの設定
wins WINSサーバーの設定
winsock  Windows Socketプログラムの設定

上位コンテキストから引き継いだコマンド:
netshでは,各コンテキストごとに実行できるコマンドが決まっており,他のコンテキストでは実行できない。しかし,インタラクティブ・モードではコンテキストの移動による不便を解消するため,例えば上位のコンテキストで実行できるコマンドのうちのいくつかは下位のコンテキストでも実行することができる。helpコマンドを実行すれば,上位から引き継がれて実行可能なコマンドと,自身のコンテキストで実行可能なコマンドの一覧が表示される。


 構文  

バッチ・モード:
netsh firewall {set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|dump|reset|help}

または

netsh -c "firewall" {set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|dump|reset|help}

インタラクティブ・モード:
netsh [-c "firewall"]
firewall
{set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|dump|reset|help}

または

netsh -a エイリアス・ファイル名

スクリプト・モード:
netsh {exec|-f} スクリプト・ファイル名

※resetコマンドはWindows 2000では利用できない
※ [-c "firewall"]を指定した場合,インタラクティブ・モード内でのコンテキスト名指定は不要

 利用環境  
Windows 95 ×
Windows 98 ×
Windows Me ×
Windows NT 4.0 ×
Windows 2000 ×
Windows XP △
Windows Server 2003 △
※Windows XPはService Pack 2以降,Windows Server 2003はService Pack 1以降のWindowsファイアウォールを搭載している環境で利用可能

 netshのコマンド・オプション 
(なし)オプションをなにもせずにnetshコマンドを実行するとインタラクティブ・モードでの入力待ち状態となる。
-a エイリアス・ファイル名インタラクティブ・モードで入力するコマンド文字列を事前にエイリアス・ファイルとしてテキストで保存し,これを実行する。作業が終了するとコマンド・レベルに戻る。
-c firewall(コンテキスト名)最初から特定のコンテキストを直接指定する場合に設定する。このオプションを指定しておくと,コマンド内やインタラクティブ・モード内でコンテキスト名を指定する必要がない。
{exec|-f} スクリプト・ファイル名スクリプト・ファイルを実行し,その設定内容を反映させる。 ただし,interfaceコンテキストなどではスクリプト・ファイルを出力することができるdumpコマンドはfirewallコンテキストでは使用できない。そのため,スクリプト・ファイルは手動で作成する必要がある。
?または/?netshコマンド・ヘルプと,netshコンテキストで実行可能なコマンド・ヘルプを表示する。


 firewallコンテキストのコマンド・オプション 
(なし)または?またはhelpfirewallコンテキスト・コマンドについてのヘルプ画面を表示する。
setファイアウォールの構成を設定する。設定する内容は以前の内容に上書きする。なお,コマンドのみ(setあるいはset allowedprogramなど),またはコマンドのあとに「?」を入力すると,各コマンド・レベルでのヘルプが表示される。

set allowedprogram [program=] パス名 [[name=] 名前 [mode=] {ENABLE|DISABLE} [scope=] {ALL|SUBNET|CUSTOM} [addresses=] アドレス [profile=] {CURRENT|DOMAIN|STANDARD|ALL}]
指定したプログラムに対するファイアウォールの構成(通信の許可/不許可など)を設定する。

set icmpsetting [type=] {2-5|8-9|11-13|17|ALL} [[mode=] {ENABLE|DISABLE} [profile=] {CURRENT|DOMAIN|STANDARD|ALL} [interface=] インタフェース名]
指定したタイプのICMP要求に対するファイアウォールの構成(通信の許可/不許可など)を設定する。

set logging [[filelocation=] パス名 [maxfilesize=] 最大ファイル・サイズ [doroppedpackets=] {ENABLE|DISABLE} [connections=] {ENABLE|DISABLE}]
ファイアウォールのログの構成を設定する。

set multicastbroadcastresponse [mode=] {ENABLE|DISABLE} [[profile=] {CURRENT|DOMAIN|STANDARD|ALL}]
マルチキャストおよびブロードキャスト応答に対するファイアウォールの構成(通信の許可/不許可など)を設定する。

set notifications [[mode=] {ENABLE|DISABLE} [profile=] {CURRENT|DOMAIN|STANDARD|ALL}]
ファイアウォールの通知を設定する。通知が有効な場合は,ファイアウォール経由で通信するプログラム(例外の一覧に登録されていないもの) が起動した時に,ブロックするかどうかを確認するダイアログのウィンドウが表示される。

set opmode [mode=] {ENABLE|DISABLE} [[exceptions=] {ENABLE|DISABLE} [profile=] {CURRENT|DOMAIN|STANDARD|ALL} [interface=] インタフェース名]
ファイアウォールの有効/無効,ファイアウォールが有効な場合に例外を許可するかどうかを設定する

set portopening [protocol=] {TCP|UDP|ALL} [port=] ポート番号 [[name=] 名前 [mode=] {ENABLE|DISABLE} [scope=] {ALL|SUBNET|CUSTOM} [addresses=] アドレス [profile=] {CURRENT|DOMAIN|STANDARD|ALL} [interface=] インタフェース名]
指定したポートに対するファイアウォールの構成(通信の許可/不許可など)を設定する。

set service [type=] {FILEANDPRINT|REMOTEADMIN|REMOTEDESKTOP|UPNP|ALL} [[mode=] {ENABLE|DISABLE} [scope=] {ALL|SUBNET|CUSTOM} [address=] アドレス [profile=] {CURRENT|DOMAIN|STANDARD|ALL}]
指定したサービス(ファイルとプリンタの共有/リモート管理/リモート・デスクトップ/UPnPフレームワーク)に対するファイアウォールの構成を設定する。なお,この中のリモート管理の例外に関してはGUIからは設定を変更できない。

addファイアウォールの構成を追加する。なお,コマンドのみ(addあるいはadd allowedprogramなど),またはコマンドのあとに「?」を入力すると,各コマンド・レベルでのヘルプが表示される。

add allowedprogram [program=] パス名 [[name=] プログラム名 [[mode=] {ENABLE|DISABLE} [scope=] {ALL|SUBNET|CUSTOM} [addresses=] アドレス [profile=] {CURRENT|DOMAIN|STANDARD|ALL}]
指定したプログラムに対するファイアウォールの構成(通信の許可/不許可など)を追加する。

add portopening [protocol=] {TCP|UDP|ALL} [port=] ポート番号 [name=] 名前 [[mode=] {ENABLE|DISABLE} [scope=] {ALL|SUBNET|CUSTOM} [addresses=] アドレス [profile=] {CURRENT|DOMAIN|STANDARD|ALL} [interface=] インタフェース名]
指定したポートに対するファイアウォールの構成(通信の許可/不許可など)を追加する。

deleteファイアウォールの構成を削除する。なお,コマンドのみ(deleteあるいはdelete allowedprogramなど),またはコマンドのあとに「?」を入力すると,各コマンド・レベルでのヘルプが表示される。

delete allowedprogram [program=] パス名 [[profile=] {CURRENT|DOMAIN|STANDARD|ALL}]
指定したプログラムに対するファイアウォールの構成を削除する。

delete portopening [protocol=] {TCP|UDP|ALL} [port=] ポート番号 [[profile=] {CURRENT|DOMAIN|STANDARD|ALL} [interface=] インタフェース名]
指定したポートに対するファイアウォールの構成を削除する。

dumpヘルプでは「構成スクリプトを表示できる」とされているが,筆者が実際に試してみたところ使用できない。マイクロソフトの技術情報の『ヘルプ : Netsh を使用して Windows ファイアウォールを管理する』にも「dumpコマンドを使用して,現在の Windows ファイアウォールの構成に基づくスクリプトを作成することはできません」という記述がある
resetファイアウォールの構成を規定値に戻す。規定値に戻すとWindowsがインストールされてからのWindowsファイアウォールの設定が全て削除される。また,インターネット接続の共有のカスタム設定は全て削除され,インターネット接続の共有は無効になる。なお,コマンドのあとに「?」を入力すると,ヘルプが表示される。
showファイアウォールの構成を表示する。なお,コマンドのあとに?を入力すると,各コマンド・レベルでのヘルプが表示される。

show config [[verbose=] {DISABLE|ENABLE}]
ファイアウォールの構成を表示する。

show currentprofile
現在のファイアウォール・プロファイルを表示する。

show icmpsetting [[verbose=] {DISABLE|ENABLE}]
ファイアウォールICMPの構成を表示する。

show logging
ファイアウォール・ログの構成を表示する。

show multicastbroadcastresponse
ファイアウォールのマルチキャスト/ブロードキャスト応答の構成を表示する

show notifications
ファイアウォール通知モードの構成を表示する。

show opmode
ファイアウォール操作モードの構成を表示する。

show portopening [[verbose=] {DISABLE|ENABLE}]
ファイアウォール・ポートの構成を表示する。

show service [[verbose=] {DISABLE|ENABLE}]
ファイアウォール・サービスの構成を表示する。

show state [[verbose=] {DISABLE|ENABLE}]
現在のファイアウォールの状態を表示する。


 firewallコンテキストのパラメータ 
[program=] パス名ファイアウォールの構成を追加,削除,設定するプログラムのパスを指定する。
[name=] 名前ファイアウォールの構成の名前を指定する。
[mode=] {ENABLE|DISABLE}ファイアウォール経由での通信の許可/不許可を指定する。
[scope=] {ALL|SUBNET|CUSTOM} [addresses=] アドレスファイアウォールの構成を適用するアドレス範囲を指定する。SUBNETを指定するとローカル・ネットワークのトラフィックのみ,CUSTOMを指定した場合は指定したアドレスからの通信のみに構成が適用される。
[profile=] {CURRENT|DOMAIN|STANDARD|ALL}設定するプロファイル(現在使用中のプロファイル,ドメイン・プロファイル,標準プロファイル,または全てのプロファイル)を指定する。
[protocol=] {TCP|UDP|ALL} [port=] ポート番号ファイアウォールの構成を追加,削除,設定するポートを指定する。
[interface=] インタフェース名ファイアウォールの構成を適用するLANインタフェースを指定する。
[type=] {2-5|8-9|11-13|17|ALL}ICMP要求のタイプを指定する。
[filelocation=] パス [maxfilesize=] 最大ファイル・サイズ [doroppedpackets=] {ENABLE|DISABLE} [connections=] {ENABLE|DISABLE}ファイアウォールログのパス,最大サイズ(1~32767),ドロップされたパケットおよび成功した接続の記録の要否を指定する。
[exceptions=] {ENABLE|DISABLE}ファイアウォールが有効な場合に例外を許可するかどうかを指定する。
[type=] {FILEANDPRINT|REMOTEADMIN| REMOTEDESKTOP|UPNP|ALL}ファイアウォールの構成を設定するサービスを指定する。
[verbose=] {DISABLE|ENABLE}構成を表示する場合に全ての情報を表示するか指定する。


 使用例1:Windowsファイアウォールの全ての構成を表示する(クリックで詳細表示)  
netsh firewall show config verbose = ENABLE

 使用例2:Windowsファイアウォールで通信を許可するポートを追加する(クリックで詳細表示)  
netsh firewall add portopening [protocol=] {TCP|UDP|ALL} [port=] ポート番号 [name=] 名前

 使用例3:Windowsファイアウォールのログを長期的に保存する(クリックで詳細表示)  
日付や時刻を環境変数に設定してからnetsh firewall set logging filelocation = %FNAME%でログ・ファイル名を変更