WinRM及WinRS更新包含在Windows Vista, Windows Server 2003 R2, Windows Server 2008 (及 Server 2008 Core)当中。 这些强大的命令行管理工具提供系统管理员以改良的方式在Windows机器上进行远程管理及远程执行程序。 不过,他们必须被启用,并且你将需要花一些时间知道他们的命令行功能特性。 幸好,这本文将提供全部的教程,你有必要今天开始使用这些工具!
什么是Windows远程管理 (WinRM)?
Windows远程管理(WinRM)是Windows Server 2003 R2, Windows Vista和Windows Server 2008中一种新式的方便远程管理的服务。WinRM是远程管理应用的“服务器”组成部分,并且WinRS(Windows远程Shell)是WinRM的“客户端”,它在远程管理WinRM服务器的计算机上运行。 然而,我们应该注意到两个计算机必须手动安装WinRS,还要使WinRM能够启动并从远程系统传回信息。
WinRM基于Web服务管理(WS-Management)标准。 这么说的意思是:WinRM使用HTTP协议(80端口)并且用SOAP来请求它工作。 这样的好处在于HTTP请求能够非常容易的穿过防火墙进行收发。 因而它的好坏在于:它使通过Internet管理远程Windows PC更为容易,或者它更容易适合Internet上存心不良的远程Windows攻击者。 WinRM使用HTTP的其它好处在于:如果HTTP入站通讯被允许,就没有其它端口必需在服务器和客户端上被开放。
WinRM是用于系统管理并基于开放标准API的新工具。 因此,如果你在这之前不是很有兴趣学习此工具,其实在我的脑海里它实际上是“微软远程管理的新标准”,它非常值得了解。
你可能已经熟悉WMI数据库。如果不是这样,WIM数据库包含了那台计算机上关于硬件和软件的各种各样的信息。几乎每个Windows系统管理程序都会调用到WMI数据库,以执行需要被在那个PC上执行的任何管理任务。
WinRM将使用WMI数据库执行你或者你的系统管理包的任务,就像使用VBScript一样使用另一个编程接口的相似任务。与我在前面提及时相同,WinRM的好处是它使用80端口(HTTP)。并且有些特殊的代码甚至允许WinRM与IIS共享80入站端口,它们可能正共同运行在80端口上。
WinRM支持多种验证方式,以阻止正连接上的任何人进行任何关于你PC客户端和服务器的管理任务。不过,如同被开放的其他任何端口一样,如果验证和加密被放置在了合适的时机,你就已经采取了全部合理的安全防范。
你的系统管理软件供应商可能已经打算在他们产品的下一版本里调用WinRM,到时你可能不知不觉的已经通过另一应用程序在使用WinRM了。使用这个CLI工具,你能十分容易地从你想要执行的任何系统管理功能的WMI数据库中调出信息。
正如你下面所见,WinRM命令行接口包括许多选项。 此WinRM的帮助信息显示了在当前系统上WinRM没有“启用”或“监听”,如图1。
图1 WinRM命令行
怎样启用和使用WinRM?
如果你正使用Windows 2008 Server,WinRM已经被安装但并未启用。 这是一个很好的安全预防措施。 在你机器上启用WinRM的简单方法就是在CMD中运行:
winrm enumerate winrm/config/listener
如果没有得到返回信息,WinRM未正常运行。 配置WinRM自动启动并允许远程访问,可像以下这样使用winrm quickconfig命令 :
C:\Users\Administrator> winrm quickconfig
WinRM is not set up to allow remote access to this machine for management.
The following changes must be made:
Create a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.
Make these changes [y/n]? y
WinRM has been updated for remote management.
Created a WinRM listener on HTTP://* to accept WS-Man requests to any IP on this machine.
C:\Users\Administrator>
Once I configured the quickconfig, I reran the enumeration command with these results:
C:\Users\Administrator> winrm e winrm/config/listener
Listener
Address = *
Transport = HTTP
Port = 80
Hostname
Enabled = true
URLPRefix = wsman
CertificateThumbprint
ListeningOn = 10.253.15.98, 127.0.0.1, ::1, fe80::5efe:10.253.15.98%11, fe80::9583:2148:e1ef:6444%10
C:\Users\Administrator>
从这里,我们可以知道WinRM已经启动。
顺便提一下,如果你想在任何时间禁用WinRM,你可以使用这样的命令:
winrm delete winrm/config/listener?IPAdress=*+Transport=HTTP
为了使用WinRM,与之连接的主机必需与WinRM主机是相同域的成员。 如果情况不是这样,我建议你参考文章“Remotely managing your Server Core using WinRM and WinRS里描述的不同安全情况。