◆一、命令行的重要性
命令行是“CMD”的意思,即命令提示符。微软从 Windows 95 操作系统开始,向来就是标榜着以友善的操作接口来驾驭您的操作系统,但是您可能发现微软从Windows Server 2000 开始,一直到Windows Vista操作系统发展中,却陆陆续续的出现许多命令行接口命令工具,这些文字接口命令工具包含AD 管理命令工具、磁盘驱动器管理命令工具、DNS 管理命令工具等等。
其中管理者甚至可以使用这些命令工具来代替大部分的图形化接口操作,但这并不代表微软的操作系统正在走回头路,或是甚至想与UNIX 、Linux 的操作系统统一苗头,让管理者可以在微软的作业系统当中享受经由快速的敲击键盘来达到“操作”系统的快感,若是您这样想,那您就误会了。事实上,命令工具在某些管理应用上甚至会比图形接口还来得恰当,甚至方便快速,因为工具命令有其图形接口上无法取代的优点。
例如:工具命令较适合工作于低速网络连结环境中(如:Telnet )执行管理工作,或是应用在大量的批次化的作业需求时。因此,笔者将在本文中介绍一个让使用者设置防火墙的管理工具─Netsh 。
◆二、netsh的定义
netsh工具在Vista帮助文档中称作NetShell。NetShell提供了一个界面,或命令模式,具可配置的环境。NetShell的功能和用途部分来源于它基于上下文的设计,新的上下文可由定制的DLLS提供,部分来源于提供的上下文,部分来源于脚本的使用。
netsh实用程序可工作于在线、离线、脚本三种模式下。要使用脚本模式,可用-f选项指定一个脚本文件,或者在netsh提示符下使用exec命令执行脚本。netsh命令是一个基于命令行的脚本编写工具,你可以使用此命令配置和监视Windows系统,此外它还提供了交互式网络外壳程序接口,简单的说它是一个可以让网络服务器管理员用来在命令提示字符下设定并监视Vista下执行的程序。
除此之外,Netsh工具还可以用来管理及设定相关的网络服务,而Netsh 之所以能用来管理系统网络服务,它的原理是:Netsh 工具本身能将所输入的内容命令整合于现有的操作系统网络服务当中,而这样的原理其实是利用导向的功能;Netsh 能将所输入的命令参数藉由导向功能将相关参数导向至适当的协助程序当中,再由该「协助程序」来执行命令,Netsh 使用动态链接库 (DLL) 文件来与其他操作系统组件交互。每个 Netsh 帮助程序 DLL 都提供一组称为上下文的扩展功能,这是网络组件专用的一组命令。这些上下文通过为一个或多个服务、实用工具或协议提供配置和监视支持来扩展 netsh 的功能。例如,Dhcpmon.dll 将为 netsh 提供配置和管理 DHCP 服务器所必需的上下文和命令组。当您想利用 Netsh工具来协助管理 DHCP 这个网络服务时,Netsh 就会将管理者所输入的相关参数设定,经由 Netsh 的导向能力导向至 mdhcp.dll,以便可以让管理者管理相关的网络服务。
Netsh 工具到底可以协助网管人员哪些工作,大致包括如下:
1、设定网络卡接口上的TCP/IP 工作状态。
2、设定路由通讯协议。
3、设定筛选器。
4、设定路由。
5、设定Vista下执行的远程访问路由器的远程访问设定。
6、显示目前在任何计算机上执行路由器的设定。
7、设置Vista防火墙。
◆三、netsh设置防火墙实例
蠕虫病毒特征之一就是利用有漏洞的操作系统进行端口攻击,因此防范此类病毒的简单方法就是屏蔽不必要的端口,防火墙软件都有此功能,其实对于采用Windows 2003的用户来说,不需要安装任何其他软件,因为可以利用系统自带的“Internet连接防火墙”来防范黑客的攻击。
Vista防火墙提供了防火墙功能,您可以使用该环境配置 Windows 防火墙设置。要运行 Windows 防火墙 netsh 命令,必须从命令提示符下启动 netsh,然后键入 firewall 以转到防火墙设置环境。您还可以在命令提示符下的一行上同时运行多个 netsh firewall 命令。您不能使用 netsh  firewall 命令来远程配置 Windows 防火墙设置,也不能基于当前的 Windows 防火墙配置使用 dump 命令创建脚本。表-1列 netsh firewall 命令可在脚本中或命令行中用来配置 Windows 防火墙。
命令名称 功能描述
show state 显示当前状态信息。
show service 显示服务。
show portopening 显示已添加到例外列表的端口。
show opmode 显示操作模式。
show notifications 显示通知的当前设置。
show multicastbroadcastresponse 显示多播或广播响应设置。
show logging 显示日志记录设置。
show icmpsetting 显示 ICMP 设置。
show currentprofile 显示当前配置文件。
set portopening 设置防火墙端口配置。
set logging 用于指定日志记录选项。
set opmode 用于指定 Windows 防火墙的全局操作模式,或者某个特定连接(接口)的 Windows 防火墙操作模式。
set service 用于启用或禁用预先定义的文件和打印机共享、远程管理、远程桌面和 UPnP 例外。
set icmpsetting 设置防火墙 ICMP 配置。
delete portopening 用于删除现有的基于端口例外。
delete allowedprogram 用于删除现有的基于程序例外。
add allowedprogram 用于添加基于程序的例外。
add portopening 用于创建基于端口的例外。
Reset 将防火墙配置重置为默认值。
dump 显示一个配置脚本。
应用实例:
1、显示面前操作模式:
使用命令:“netsh firewall show opmode”,见图1:
1 显示面前操作模式
2、进入 Windows 防火墙的全局操作模式,并且打开TCP 80端口允许http访问,
允许所有流量通过DNS服务器的53端口
依次使用命令:
“ set opmode enable”
“add portopening TCP 80 "My Web Port"”
“add portopening protocol=ALL port=53 name=DNS mode=ENABLE scope=CUSTOM”

3、验证netsh操作是否成功
(1)使用show state命令验证,见图2:
2 show state命令验证
(2)使用鼠标通过图形界面打开防火墙配置界面,验证netsh操作,见图3:
3 验证netsh操作是否成功
从图2和3可以看到使用netsh命令已经成功打开TCP 80端口,允许web访问。Dns服务器DNS服务器的53端口已经打开。
4、打开端口实现文件和打印共享
需要打开137和138 UDP端口.,139和 445 TCP端口依次使用命令:
“add portopening UDP 137 blah enable subnet”
“ add portopening UDP 138 blah enable subnet”
“add portopening TCP 139 blah enable subnet”
“add portopening TCP 445 blah enable subnet”
然后可以重新验证验证netsh操作是否成功。见图4 。
图 4 重新验证验证netsh操作 文件和打印共享已经启动
◆总结:
本文介绍的几个范例应用只是 Netsh 命令工具中,众多功能参数当中冰山的一小角而已。通过配置组合可以完成复杂的工作(多达1000多种),是通过传统的图形化界面无法快速完成的(需要启动Windows高级防火墙配置)。
无论是Windows Vista 还是Windows 2003、XP, 一旦这些外表华丽的系统出了问题, 往往只能借助最“原始”命令行, 命令行是一种工具, 一种可以恢复系统. 保护数据. 排除故障. 解决问题的利器. 所以, 作为计算机爱好者和系统管理员, 就不得不认真学习和掌握命令行, 以备不时之需. 解燃眉之急。另外本文介绍的命令经过验证也可以在Windows Xp 和Windows 2003 Sever中使用。
另外目前国内关于 Windows Vista命令行的工具书还比较缺乏,读者可以参考此书。
Windows Administration at the Command Line for Windows Vista
Sybex Publication
ISBN: 9780470046166