original link http://hi.baidu.com/q奇q_1983/blog/item/76c7f937cc76ad1a91ef393a.html
NETSH
概述:
NetSH是Windows系统本身提供的功能强大的命令行网络配置工具。它允许从本地或远程显示或修改当前正在运行的计算机的网络配置。
Netsh 还提供了一个脚本功能,对于指定计算机,可以通过此功能以批处理模式运行一组命令。为了存档或配置其他服务器,Netsh 也可以将配置脚本保存在文本文件中。
官方:
NetSH 是一个管理员可以用来在命令提示符处配置并监视基于 Windows 的计算机的工具。
使用 Netsh.exe 工具,可以将输入的上下文命令定向到适当的帮助器,然后帮助器将执行命令。帮助器是个动态链接库 (.dll) 文件,它通过提供配置、监视和支持一种或多种服务、实用工具或协议,来扩展 Netsh.exe 工具的功能。帮助器也可以用于扩展其他帮助器的功能。
Netsh.exe 工具可以执行以下任务:
配置接口。
配置路由协议。
配置筛选器。
配置路由。
配置基于 Windows 的远程访问路由器(它运行路由和远程访问服务器 (RRAS) 服务)的远程访问行为。
显示任何计算机上当前运行路由器的配置。
使用脚本功能以批处理模式运行一组针对指定路由器的命令。
Netsh.exe 工具的语法为:
netsh [-r router name] [-a AliasFile] [-c Context] [Command | -f ScriptFile]
要显示在上下文中可以使用的子上下文和命令的列表,请在 netsh> 命令提示符处键入上下文名称,后跟空格和 ?。
例如,要显示可以在 /routing 上下文使用的子上下文和命令的列表,应在 netsh> 命令提示符处键入 routing ?,然后按 Enter。
NetSH命令一览(NetSH模式下输入?然后回车,如NetSH>?)
.. - 移到上一层上下文级。
? - 显示命令列表。
aaaa - 更改到 `aaaa` 上下文。
abort - 丢弃在脱机模式下所做的更改。
add - 将一个配置项添加到项目列表中。
alias - 添加一个别名
bye - 退出程序。
commit - 提交在脱机模式中所做的更改。
delete - 在项目列表上删除一个配置项目。
dhcp - 更改到 `dhcp` 上下文。
dump - 显示一个配置脚本。
exec - 运行一个脚本文件。
exit - 退出程序。
help - 显示命令列表。
interface - 更改到 `interface` 上下文。
offline - 将当前模式设置成脱机。
online - 将当前模式设置成联机。
popd - 从堆栈上打开一个上下文。
pushd - 将当前上下文放推入堆栈。
quit - 退出程序。
ras - 更改到 `ras` 上下文。
routing - 更改到 `routing` 上下文。
set - 更新配置设置。
show - 显示信息
unalias - 删除一个别名。
wins - 更改到 `wins` 上下文。
上下文字符串附加在 Netsh.exe 工具命令之后,并被传递到相关的帮助器。帮助器可以有一个或多个映射到上下文的入口点。Netsh.exe 工具中可使用的一些上下文是:
上下文命令:/dhcp
结果:更改为动态主机配置协议 (DHCP) 上下文。
上下文命令:/ras
结果:更改为远程访问服务器 (RAS) 上下文。
上下文命令:/routing
结果:更改为路由上下文。
上下文命令:/wins
结果:更改为 Windows Internet 命名服务 (WINS) 上下文。
上下文也可嵌套在其他上下文中。例如,以下上下文在 netsh>ras 上下文中运行:
上下文命令:/ip
结果:更改为 Internet 协议 (IP) 上下文。
上下文命令:/ipx
结果:更改为网际数据包交换 (IPX) 上下文。
上下文命令:/netbeui
结果:更改为 NetBios 增强型用户接口 (NETBEUI) 上下文。
以下子上下文在 netsh>routing ip 上下文中运行:
上下文命令:/autodhcp
结果:更改为 autodhcp 子上下文。
上下文命令:/dnsproxy
结果:更改为 dnsproxy 子上下文。
上下文命令:/igmp
结果:更改为 Internet 组成员身份协议 (IGMP) 子上下文。
上下文命令:/mib
结果:更改为管理信息库 (MIB) 子上下文。
上下文命令:/nat
结果:更改为网络地址转换 (NAT) 子上下文。
上下文命令:/ospf
结果:更改为开放式最短路径优先 (OSPF) 子上下文。
上下文命令:/relay
结果:更改为中继子上下文。
上下文命令:/rip
结果:更改为路由信息协议 (RIP) 子上下文。
以下附加命令可以与 Netsh.exe 工具一起使用:
注意:可选参数用方括号 ([ ]) 括起来。替代项之间用竖线 (|) 字符分开。
上下文命令:/?
结果:显示帮助。
上下文命令:/abort
结果:放弃在脱机模式进行的任何更改。在联机模式下不起作用。
上下文命令:/add helper DLL-name
结果:安装 netsh.exe 中的 helper .dll 文件。
上下文命令:/alias [alias-name] [string1] [string2 ...]
结果:如果为 /alias,则列出所有别名。如果为 /alias alias-name,则显示等效的字符串。如果为 /alias alias-name string1 string2 ...,则将别名设置为指定的字符串。
上下文命令:/bye
结果:退出程序。
上下文命令:/commit
结果:将在脱机模式下所做的任何更改提交给路由器。在联机模式下不起作用。
上下文命令:/delete helper .dll file name
结果:删除 Netsh.exe 中的 helper .dll 文件。
上下文命令:/dump -file name
结果:将配置转储或附加到文本文件。
上下文命令:/exec script file name
结果:加载脚本文件,然后执行其中的命令。
上下文命令:/exit
结果:退出程序。
上下文命令:/h
结果:显示帮助。
上下文命令:/help
结果:显示帮助。
上下文命令:/offline
结果:将当前模式设置为脱机。保存在此模式下所做的任何更改,但需要在路由器中设置“commit”或“online”命令。
上下文命令:/online
结果:将当前模式设置为联机。在此模式下所做的任何更改立即在路由器中反映。
上下文命令:/popd
结果:从堆栈中取出上下文。
上下文命令:/pushd
结果:将当前上下文推入堆栈中。
上下文命令:/quit
结果:退出程序。
上下文命令:/set mode [mode =] online | offline
结果:将当前模式设置为联机或脱机。
上下文命令:/show alias | helper | mode
结果:如果为 /show alias,则列出所有定义的别名。如果为 /show helper,则列出所有顶层帮助器。如果为 /show mode,则显示当前模式。
上下文命令:/unalias alias name
结果:删除指定的别名。
NetSH命令介绍方案:
C:/>netsh ?
用法: netsh [-a AliasFile] [-c Context] [-r RemoteMachine] [-u [DomainName]UserName] [-p Password | *] [Command | -f ScriptFile]
进入NetSH环境后,在根级目录用exec命令也可以加载一个配置脚本。还有对winsock、route、ras等网络服务的配置也可以通过Netsh的内置命令操作。
C:/>netsh
netsh>help
下列指令有效:
此上下文中的命令:
.. - 移到上一层上下文级。
? - 显示命令列表。
abort - 丢弃在脱机模式下所做的更改。
add - 在项目列表上添加一个配置项目。
alias - 添加一个别名
bridge - 更改到 `netsh bridge' 上下文。
bye - 退出程序。
commit - 提交在脱机模式中所做的更改。
delete - 在项目列表上删除一个配置项目。
diag - 更改到 `netsh diag' 上下文。
dump - 显示一个配置脚本。
exec - 运行一个脚本文件。
exit - 退出程序。
help - 显示命令列表。
interface - 更改到 `netsh interface' 上下文。
offline - 将当前模式设置成脱机。
online - 将当前模式设置成联机。
popd - 从堆栈上打开一个上下文。
pushd - 将当前上下文放推入堆栈。
quit - 退出程序。
ras - 更改到 `netsh ras' 上下文。
routing - 更改到 `netsh routing' 上下文。
set - 更新配置设置。
show - 显示信息
{
netsh>show
下列指令有效:
此上下文中的命令:
show alias - 列出所有定义过的别名。
show helper - 请列出所有头等助手。
show mode - 显示当前的模式。
netsh>
}
unalias - 删除一个别名。
winsock - 更改到 `netsh winsock' 上下文。
下列的子上下文可用:
bridge diag interface ras routing winsock
若需要命令的更多帮助信息,请键入命令,
后面跟 ?。
netsh>
如:
导出配置脚本:netsh -c interface ip dump > c:/interface.txt
导入配置脚本:netsh -f c:/interface.txt
可用的帮助器动态连接库文件
路由&远程访问 IP 配置 - Ipmontr.dll
路由&远程访问 IPX 配置 - Ipxmontr.dll
接口 - Ifmon.dll
RAS - Rasmontr.dll
DHCP - Dhcpmon.dll
WINS - Winsmon.dll
帮助器动态连接库文件的相关注册表项
HKEY_LOCAL_MACHINE/Software/Microsoft/NetSh/
REG_SZ:Ipmontr.dll
REG_SZ:Ipxmontr.dll
REG_SZ:Ifmon.dll
REG_SZ:Rasmontr.dll
REG_SZ:Dhcpmon.dll
REG_SZ:Winsmon.dll
注意:如果尝试使用 Netsh dump -<file name> 将配置转储到未运行的文件,请尝试在命令行中使用以下语法:netsh dump >filename or path/filename。
--------------------------------------------------------------------------------
这篇文章中的信息适用于:
Microsoft Windows 2000 Server
Microsoft Windows 2000 Advanced Server
Microsoft Windows 2000 Professional Edition
Microsoft Windows 2000 Datacenter Server
关键字: kbinfo kbnetwork KB242468
配置示例:
备份/恢复
服务器网络设置
谈到网络设置,您一定会想到IP地址、子网掩码、网关、DNS等(这些主要是接口IP配置参数)。对于普通计算机来说,网络设置只有接口IP配置参数;而对于服务器而言,网络设置不仅仅包括前面所提到的接口IP配置参数,还有接口配置、端口代理配置、远程访问配置、路由配置、DNS 代理配置、NAT 配置、DHCP中继代理配置等等。上述的网络设置参数,根据服务器在网络中所起的特殊作用而有所不同,如:校园网中用Windows 2000 Server服务器负责连接外网,并且连接校内多个子网,那么在该服务器上必定要设置远程访问配置、路由配置、DNS 代理配置以及NAT 配置。
1.备份服务器的网络设置
一个有经验的网络管理员所做的最频繁的工作就是备份。只有做了备份,当遇到毁灭性破坏时,才能迅速及时地恢复网络。网络设置备份操作:netsh dump >bak12.txt,通过该操作可将网络设置备份到bak12.txt文件中,该文件为一个文本文件。
对网络设置进行调整后,应即时进行备份。
2.恢复服务器的网络设置
在进行网络设置调整时,如果发生了操作错误,或者服务器网络出现故障,可以利用备份快速恢复网络设置。操作方法:nesh exec bak12.txt。
通过Netsh命令对服务器网络设置进行备份,特别简单方便,而且快速有效,无需其他软件辅助,非常适合网络管理人员用来对服务器网络设置进行备份和恢复管理。
下面讲一下NetSH的使用操作(有些东西可能写得不太详细,需要自己实际操作一下):
C:/>ipconfig (首先用ipconfig这个命令看一下更改之前的ip地址)
Windows 2000 IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.1.1.94 (本地连接更改之前的ip)
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.1.254
C:/>netsh (进入设置模式)
netsh>interface
interface>ip
interface ip>set address "本地连接" static 10.1.1.111 255.255.255.0 10.1.1.254
interface ip>exit
上文中的set命令具体解释如下:
set address - 设置指定的接口的 IP 地址和默认网关。
set dns - 设置 DNS 服务器模式和地址。
set wins - 设置 WINS 服务器模式和地址。
C:/>ipconfig (更改后再用ipconfig命令看一下,确认一下是否更改成功)
Windows 2000 IP Configuration
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
IP Address. . . . . . . . . . . . : 10.1.1.111
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.1.1.254
在工作过程中会遇到在不同的网段中进行网络调试的情况,经常需要将机器在几个不同的IP地址中进行切换。在Win2000操作系统中改变IP地址较之Win98已经方便多了 因为改完IP地址后不需要重启计算机,但还要进入网络属性设置中进行操作。有没有再简便一点的方法呢,比如用鼠标双击一下快捷方式就可以实现IP地址的切换?
答案是肯定的。在Win2000中用netsh命令就可以实现这个功能。首先进入命令行模式(在"开始→运行"中键入"cmd"即可进入命令行模式),在提示符下键入netsh即可进入netsh的界面。再键入int ip进入接口IP的配置模式,键入dump则列出接口IP配置信息:
C:/Documents and Settings/Administrator>netsh
netsh>
netsh>int ip
interface ip>dump
# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip
# ″本地连接″ 的接口IP 配置(注:以下显示视具体机器情况而定)
set address name = ″本地连接″ source = static addr = 192.168.0.5 mask = 255.255.255.0
set address name = ″本地连接″ gateway = 192.168.0.2 gwmetric = 1
set dns name = ″本地连接″ source = static addr = 61.237.17.181
add dns name = ″本地连接″ addr = 211.97.168.129
add dns name = ″本地连接″ addr = 211.98.4.1
set wins name = ″本地连接″ source = static addr = none
# ″本地连接 2″ 的接口 IP 配置
set address name = ″本地连接 2″ source = dhcp
set dns name = ″本地连接 2″ source = dhcp
set wins name = ″本地连接 2″ source = dhcp
popd
# 接口 IP 配置结束
现在我们可以大致了解到用netsh命令更改IP地址的方式,即通过"set address name =连接名称(连接名称要用引号括起来)source=static addr=IP地址 mask=子网掩码"来实现。
到命令行模式下用netsh直接试一下。比如要将本机的IP地址改为192.168.0.7,子网掩码为255.255.255.0,可以进行以下*作:
C:/Documents and Settings/Administrator>netsh
netsh>int ip
interface ip>set address name="本地连接" source=static addr=192.168.0.7 mask=255.255.255.0
确认更改。
interface ip>exit
再用ipconfig命令核实一下:
C:/Documents and Settings/Administrator>ipconfig
Windows 2000 IP Configuration
Ethernet adapter 本地连接 2
Media State . . . . . . . . . . . Cable Disconnected
Ethernet adapter 本地连接
Connection-specific DNS Suffix .
IP Address. . . . . . . . . . . . 192.168.0.7
Subnet Mask . . . . . . . . . . . 255.255.255.0
Default Gateway . . . . . . . . . 192.168.0.2
从以上显示中可以看到已经成功实现了在Win2000中用命令行方式来改变IP地址。用这种方式改变IP地址甚至还没有在图形界面中操作来得快。不过我们再用脚本帮一下忙,离胜利目标就不远了。首先打开记事本,输入以下内容:
int ip
set address name=″本地连接″ source=static addr=192.168.0.7 mask=255.255.255.0
然后保存为一个名为"7.sh"的文件,放到C盘根目录下,再进入命令行模式,在C盘根目录下键入"netsh exec 7.sh",好像没什么反应啊?不过再用ipconfig查看一下,会发现IP地址已经改过来了。
最后再用记事本写一个批处理文件,命名为"7.bat",内容为"netsh exec 7.sh"。为该文件在桌面上创建一个快捷方式,这样双击该快捷方式即可实现IP地址的快速改变。如果要快速在192.168.0.5、192.168.0.7等相同网段IP地址间进行切换的话,只需要改变"addr"后面的地址即可,但是要将IP地址改为如172.19.96.7之类不同网段的IP地址,就需要将网关信息一起改变,也就是在脚本文件中加入一行关于网关的信息:
int ip
set address name=″本地连接″source=static addr=172.19.96.7 mask=255.255.255.0
set address name=″本地连接″gateway=172.19.96.1 gwmetric=1
同样地将以上内容存为脚本文件,再做成批处理文件执行一下,用ipconfig/all命令检测一下,发现包括网关在内的信息也修改过来了。
管理学校机房
Netsh 命令的强大,有经验的管理员都不会怀疑;以前有很多介绍netsh命令的文章,今天我们从另一方面感受一下netsh命令的神奇。
网络环境:
ADSL接入,通过ISA上网,
上网服务器:win2ks+isa2k
IP:192.168.0.1
subnetmask:255.255.255.0
DNS为ISP的DNS IP:202.101.10.10
客户机全部win2kpro(并装有还原卡)
IP:192.168.0.2---192.168.0.102
subnetmask:255.255.255.0
网关和DNS都为代理服务器的IP:192.168.0.1并且都装了ISA的防火墙客户端软件。
学校规定:学生帐号登陆不能上Internet,而老师通过自己帐号登陆则可以连接Internet;
多数情况下上网权限的控制,都是通过IP地址来实现(当然,ISA在AD的支持下是可以通过帐户来实现上网权限的控制,这不是本文讨论范围内),也就是说同一台电脑,学生用过后,如果老师使用时要Internet的话,就必须更改计算机的IP地址,但有些菜鸟老师更改,都教了N次了,还是不会......
在默认情况下,客户机是全部不能上internet的,ISA的规则上是禁止192.168.0.2---192.168.0.102的IP上internet,另外在ISA再创建一规则,允许192.168.0.103-192.168.0.203上internet (这不是本文的重点,如果有需要,大家可以查看相关资料)。
现在netsh派上用场了,我们客户机PC18上运行CMD进入MS-DOS,输入
netsh -c interface ip dump > c:/NetPC.TXT
(该命令是显示当前”本地连接" 的接口IP 配置,并保存在NetPC.TXT文本文件中)
查看一下c:/NetPC.TXT这个文件,显示的是当前”本地连接”的接口的IP配置,是否跟用ipconfig /all命令,看到的一样的。
{
TPYE c:/NetPC.TXT
# ----------------------------------
# 接口 IP 配置
# ----------------------------------
pushd interface ip
# "本地连接" 的接口 IP 配置
set address name="本地连接" source=static addr=192.168.0.18 mask=255.255.255.0
set address name="本地连接" gateway=192.168.0.1 gwmetric=0
set dns name="本地连接" source=static addr=192.168.0.1 register=PRIMARY
add dns name="本地连接" addr=202.101.10.10 index=2
set wins name="本地连接" source=static addr=none
popd
# 接口 IP 配置结束
}
我们打开NetPC.TXT这个文件,把“addr=192.168.0.18”的IP改为“addr=192.168.0.118”,再保存。
然后,在老师帐户的桌面上创建一个IP.BAT文件,内容输入“netsh -f c:/NetPC.TXT”(注意文件的路径,我们刚才是把NetPC.TXT放在C盘根目录下)。
用老师的帐户登陆后,双击桌面上的IP.BAT文件,我们用ipconfig /all看看结果,显示IP地址换成192.168.0.118了,别的配置都没有变。
我们知道192.168.0.103―192.168.0.203的IP地址是可以上网的。也就是说,如果老师想上网的话,只要双击IP.BAT这个文件就可以了;
以上的设置是在PC18这台机器上做的,如果我们要在别的机器上设置,我们只在把NetPC.TXT这个文件的里的IP地址换成192.168.0.103-192.168.0.203范围内的IP(当然要保证使用的IP是唯一的,以免产生IP冲突),再新建一个IP.BAT文件,内容可以一样,不过要注意NetPC.TXT这个文件的路径;补允一点,老师帐户都为管理员组,学生帐户为普通用户组。
通过以上设置,基本上达到我们的目的,老师上机的时候,只要双击桌面上IP.BAT这个文件,IP地址就会换成192.168.0.103―192.168.0.203这个网段的IP,也就是说可以上网了,电脑重启,因为有还原卡,机器又会被变成192.168.0.2―192.168.0.102这个网段的IP,也就不能上网了。通过netsh这个命令,我们能感觉到他的强大,可以为我们免去一些烦锁的事情。