\Windows的网络外壳(Netsh)也许是通过命令提示符查看或管理网络相关设备的一种好方法。你可以用它来运行一次性命令,也可以利用脚本实现一定的自动化。而且正如我们今天所要讨论的,Netsh还可以用来管理远程工作站和服务器。

使用 Netsh 的远程功能

Netsh的内置远程功能让你可以将命令发送到网络上的一个个机器上。你可以指定想在哪个远程机器上运行命令或脚本,只要插入-r选项。必要的话,你还可以指定远程连接所使用的登录证书:-u表示远程机器的用户名,-p则表示密码。

打开命令提示符,输入下面这个命令,即可访问远程机器上的Netsh CLI(命令行接口):

1.
  1. netsh -r hostname -u domain\admin -p password

一旦你确定可以获得远程访问权,还可以直接运行netsh命令。比如说,这个命令表明了如何获取IP配置:

netsh -r hostname -u domain\admin -p password interface ip show config1.

至于-r选项,除了远程机器的主机名称外,你还可以使用IP地址或FQDN。

如果你在连接远程机器时遇到了问题,就要确保Remote Registry(远程注册表)服务在远程机器上运行。要是没有运行,那么Windows可能会显示“Network Path Not Found”(网络路径未找到)的错误信息。另外,要确保File and Printer Sharing for Microsoft Networks(微软网络的文件和打印机共享)在远程机器的网络连接属性中已被启用。与往常一样,确保没有任何防火墙阻止流量。

要是连接问题依然存在,不妨试试下面编辑注册表的做法:

1.打开远程机器上的RegEdit,浏览至HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System。

2. 添加一个新的DWORD值,名为“LocalAccountTokenFilterPolicy”;要是该值之前并不存在,就要确保其值被设为“1”。

3. 重启远程机器。

通过 psexec 使用 Netsh

Netsh 缺少一种简易的方法来同时管理多个远程机器。虽然你可以另辟蹊径使用内置的远程功能,比如把多个远程地址一起放入到批文件及其他脚本中,但你采用其他选项可能更好。

比如说,使用来自Windows Sysinternals网站的PsExec实用程序(http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx),你可以将Netsh(或其他任何命令)同时分发到多个机器上。

一旦你下载了PsExec,打开命令提示符,进入到含有它的那个文件夹,试一试下面这个命令,访问远程机器的CLI:

psexec \\hostname -u domain\admin -p password cmd1.

如果远程机器安装的操作系统是Windows Vista或更高版本,你可能需要使用-h选项,让进程在使用帐户的提升令牌(elevated token)这一情况下运行。

一旦你确认能获得远程访问权,还可以直接运行netsh命令,比如说:

psexec \\hostname -u domain\admin -p password cmd.exe /c netsh.exe interface ip show config1.

如果不需要交互式CLI――比如说,如果你在运行并不提出输出的命令,可以考虑为psexec添加–d选项。这个选项表明它并不等待进程结束。另一方面,如果你想让该程序在远程机器的桌面上具有交互性,可以考虑使用-i选项。