概要  
コマンドで各種ネットワーク設定の設定や変更をするnetshコマンドのオプションの一つ。パソコンのネットワーク・カードに設定されるIP設定(IPv4設定のみ)の確認や変更をする。

 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プログラムの設定
 これらのコンテキストの配下にも,さらなるサブコンテキストが存在し,細かく設定できるようになっている。例えば,ネットワーク・カードにバインドされたIPv4ベースのIP設定を変更したい場合,「interface ip」という2つのサブコンテキストを指定する必要がある。また,IPv6設定を変更したい場合は「interface ipv6」というコンテキストを指定する必要がある。

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


 構文  

バッチ・モード:
netsh [-r リモート・コンピュータ名] interface ip {set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|dump|reset|help}

または

netsh -c "interface ip" [-r リモート・コンピュータ名] {set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|dump|reset|help}

インタラクティブ・モード:
netsh [-c "interface ip"] [-r リモート・コンピュータ名]
interface ip
{set サブコマンド|add サブコマンド|delete サブコマンド|show サブコマンド|dump|reset|help}

または

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

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

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

 利用環境  
Windows 95 ×
Windows 98 ×
Windows Me ×
Windows NT 4.0 ×
Windows 2000 ○
Windows XP ○
Windows Server 2003 ○

 netshのコマンド・オプション 
(なし)オプションをなにもせずにnetshコマンドを実行するとインタラクティブ・モードでの入力待ち状態となる。
-a エイリアス・ファイル名インタラクティブ・モードで入力するコマンド文字列を事前にエイリアス・ファイルとしてテキストで保存し,これを実行する。作業が終了するとコマンド・レベルに戻る。
-c "interface ip(コンテキスト名)"最初から特定のコンテキストを直接指定する場合に設定する。このオプションを指定しておくと,コマンド内やインタラクティブ・モード内でコンテキスト名を指定する必要がない。ここでコンテキスト名「interface ip」を指定する場合は間にスペースを挟むのでダブルクォーテーションでくくる必要がある。
-r コンピュータ名コンピュータ名で指定したリモート・コンピュータ上でコマンドを実行する。ただし,このオプションを使ってinterface ipコンテキストでのコマンドを実行する場合,おおくの制限事項がある。筆者が確認した限り,TCP/IPプロパティの設定や変更に関しては,事実上有効なコマンド実行ができない。これは,インタフェース名の内部的な名前解決に問題があり,例えばWindows 2000では"ローカル エリア接続"のようなインタフェース名をGUID(16進数の組み合わせによる一意のID)でそのまま表示してしまうためである。これを踏まえ,Windows XP以降はリモート・コンピュータ上ではTCP/IPプロパティの設定や表示ができないように関連コマンドがそもそも定義されていない。とくに無効なリモート・ベースでのコマンドが削除されたので,Windows XP以降ではリモートのinterface ipコンテキストでは事実上,ルーティングとリモートアクセス(RRAS)に関する情報表示が可能な程度しか動作しない。このため,現状はリモート・コンピュータ上のIPアドレスの設定や表示のために,このコマンドは利用しない方が混乱が少ないだろう。
{exec|-f} スクリプト・ファイル名事前にdumpコマンドで出力したスクリプト・ファイルを実行し,その時の設定内容を反映させる。
?または/?netshコマンド・ヘルプと,netshコンテキストで実行可能なコマンド・ヘルプを表示する。


 interface ipコンテキストのコマンド・オプション 
(なし)または?またはhelpinterface ipコンテキスト・コマンドについてのヘルプ画面を表示する。
setTCP/IPのプロパティとなる各項目について初期値を設定する。設定内容は以前の内容に上書きする。なお,コマンドのみ(setあるいはset addressなど),またはコマンドのあとに?を入力すると,各コマンド・レベルでのヘルプが表示される。

set address [name=] インタフェース名 [[source=] dhcp | [source=] static [addr=] IPアドレス [mask=] サブネット・マスク] [{[gateway=] デフォルト・ゲートウエイ | [gateway=] none} [gwmetric=] メトリック]
デフォルトのIPアドレスを設定する。DHCPおよび静的IPアドレスどちらも設定できる。必ずインタフェース名("ローカル エリア接続"など)が必要となる。

set dns [name=] インタフェース名 [[source=] dhcp | [source=] static {[addr=] IPアドレス | [addr=] none}] [[register=] none | primary | both]
参照先DNSサーバーを設定する(優先DNSサーバー)。構文の基本はset addressコマンドと同じである。registerオプションはDNS動的更新の登録を設定し,none(登録しない),primary(プライマリDNSサフィックスのみ),both(プライマリDNSサフィックスとインタフェースに設定されたDNSサフィックスの両方)が設定できる。

set wins [name=] インタフェース名 [[source=] dhcp | [source=] static [addr=] IPアドレス | [addr=] none]
参照先WINSサーバーを登録する。

addすでに初期値を設定済みのTCP/IPプロパティ項目について,2つめ以降の設定を追加する。setコマンドとは異なり,以前の設定は上書きされない。なお,コマンドのみ(setあるいはset addressなど),またはコマンドのあとに?を入力すると,各コマンド・レベルでのヘルプが表示される。

add address [name=] インタフェース名 [[addr=] IPアドレス [mask=] サブネット・マスク] [[gateway=] デフォルト・ゲートウエイ [gwmetric=] メトリック]
追加するIPアドレスを設定する。静的IPアドレスのみの設定となるため,sourceオプションはない。

add dns [name=] インタフェース名 [addr=] IPアドレス [index=] 数字
参照先DNSサーバーを設定する(代替DNSサーバー)。indexオプションは何番目の代替DNSサーバーとして設定するかを数字で表示する。通常は"2"となるが,"3"以上も設定することができる。同じ数字を入力すると,内容が上書きされる。

add wins [name=] インタフェース名 [addr=] IPアドレス [index=] 数字
参照先WINSサーバーを登録する。構文はadd dnsコマンドと同じ。

delete既に設定されているTCP/IPプロパティの各項目を削除する。なお,コマンドのみ(setあるいはset addressなど),またはコマンドのあとに?を入力すると,各コマンド・レベルでのヘルプが表示される。

delete address [name=] インタフェース名 [[addr=] IPアドレス] [[gateway=] デフォルト・ゲートウエイ | all]
削除するIPアドレスを設定する。gatewayオプションでallを指定すると,すべてのデフォルト・ゲートウエイが削除される。ただし,デフォルト設定されたIPアドレスを削除することはできない。

delete dns [name=] インタフェース名 [addr=] IPアドレス | all
削除する参照先DNSサーバーを設定する(優先・代替DNSサーバー)。allを設定すると,すべてのDNSサーバ設定が削除される。

delete wins [name=] インタフェース名 [addr=] IPアドレス | all
削除するWINSサーバーを設定する。構文はdelete dnsコマンドと同じ。

delete arpcache [[name=] インタフェース名]
指定したインタフェース上のARPキャッシュを削除する。インタフェース名の指定がない場合,すべてのインタフェース上のARPキャッシュを削除する。

dumpスクリプト・モードで利用できるスクリプト・データを,コンソールに出力する。なお,コマンドのあとに?を入力すると,コマンド・レベルでのヘルプを表示する。

dump
ネットワーク・インタフェースに設定されたTCP/IP設定をスクリプトの形でダンプする。このダンプ内容を使ってnetsh -fオプションでのスクリプト・モードでの実行を実行できる。

resetTCP/IP設定のレジストリやコンポーネント関連をリセットする。なお,コマンドのあとに?を入力すると,コマンド・レベルでのヘルプが表示する。

reset [name=] 出力ログ・ファイル名
ネットワーク・インタフェースに設定されたTCP/IP関連のレジストリやとコンポーネント周りをリセットする。変更した内容について出力ログを設定する必要がある。

show各種TCP/IP関連の設定や統計情報を表示する。コマンド(showあるいはset addressなど)のあとに?を入力すると,各コマンド・レベルでのヘルプが表示される。なお,show addressなどの各サブコマンドについてオプションを入力せずに実行した場合,該当するすべての設定(たとえばすべてのインタフェースについて)を,一度だけ表示する。

show address [[name=] インタフェース名]
TCP/IPプロパティのIPアドレス情報(DHCPの有無,IPアドレスおよびサブネット・マスク(静的設定時のみ),デフォルト・ゲートウエイとメトリック(静的設定時のみ),インタフェース・メトリックを表示する。

show dns [[name=] インタフェース名]
TCP/IPプロパティの参照先DNSサーバー情報(DNSサーバーのIPアドレス,DNS自動登録の設定状態)を表示する。

show wins [[name=] インタフェース名]
TCP/IPプロパティの参照先WINSサーバー情報(WINSサーバーのIPアドレス)を表示する。

show config [[name=] インタフェース名]
上記のshow address/dns/winsの各項目を一度に表示する。

show icmp [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,ICMP統計情報を表示する。RRASサービスが動作していないと利用できない。

show interface [[index=] インデックス値] [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,インタフェース統計情報を表示する。RRASサービスが動作していないと利用できない。オプションがない場合はすべてのインタフェースについて表示され,このときインタフェースにひも付いたインデックス値も確認できる。

show ipaddress [[index=] IPアドレス] [rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,インタフェースIPアドレス情報を表示する。RRASサービスが動作していないと利用できない。

show ipnet [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,IP net-to-mediaマッピング情報を表示する。RRASサービスが動作していないと利用できない。

show ipstats [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,IP統計情報を表示する。RRASサービスが動作していないと利用できない。

show joins [[addr=] IPアドレス]
参加したマルチキャスト・グループを表示する。

show offload [[name=] インタフェース名]
インタフェースのTCP/IPオフロード設定(デバイス・ドライバ上で実装されている場合)が表示される。

show tcpconn [[index=] ローカルIPアドレス ローカル・ポート リモートIPアドレス リモート・ポート] [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,TCP接続情報(待ち受けやコネクション状態など)を表示する。RRASサービスが動作していないと利用できない。ローカルおよびリモートのIPアドレスとポートを指定すると,その項目だけを表示する。

show tcpstats [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,TCP統計情報を表示する。RRASサービスが動作していないと利用できない。

show udpconn [[index=] ローカルIPアドレス ローカル・ポート] [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,UDP接続情報(待ち受けやコネクション状態など)を表示する。RRASサービスが動作していないと,利用できない。ローカルのIPアドレスとポートを指定すると,その項目だけ表示する。

show udpstats [[rr=] 更新間隔(秒)]
ルーティングとリモート・アクセス・サービス(RRAS)上の,UDP統計情報を表示する。RRASサービスが動作していないと利用できない。


 使用例1:IPアドレスを設定する(クリックで詳細表示)  
netsh interface ip set address "ローカル エリア接続" static IPアドレス サブネット・マスク デフォルト・ゲートウエイ none

 使用例2:DNSサーバー自動登録の設定を無効にしたい(クリックで詳細表示)  
netsh interface ip set dns "ローカル エリア接続" static DNSサーバー none

 使用例3:ネットワーク環境に応じて設定を切り替えたい(クリックで詳細表示)  
netsh interface ip show addressで設定を検出後に適切なスクリプトを実行するバッチを用意