说到对Windows Server 2012和Windows 8的远程管理,记得当我还是菜鸟的时候狭隘的理解为等同于对系统通过微软终端服务MSTSC实现的基于RDP协议的远程桌面管理,或者就是Microsoft 管理控制台MMC;当然实际上现在针对于Windows Server 2012环境的远程管理方法,可以简单的理解为通过服务器管理器实现对数据中心中的服务器实现1:1或1:多图形化管理,或通过Powershell实现远程自动化管理。
服务器管理器是个图形化的管理工具,该工具内置在Windows Server 2012非Server Core模式的环境中(包含在Full GUI和最小化服务器图形界面Mini Shell两种模式),通过它可以实现对数据中心的其他Windows Server 2012的服务器进行远程图形化管理,目前单个服务器管理器可以实现对最多100台远程服务器进行统一管理。
需要通过修改服务器角色和功能来实现服务器管理器角色的添加和删除:
1. 卸载服务器管理器:
对于已经默认包含了服务器管理器(非Server Core模式)的环境,
a. 可以通过进入服务器核心模式的方式,利用服务器管理器所包含的图形化的删除服务器角色和功能删除掉所有服务器图形Shell和图形管理工具组件
b. 利用服务器管理器所包含的图形化的删除服务器角色和功能仅删除图形化管理工具和基础结构
c. 通过Powershell也可以禁用服务器管理器,方法是
Uninstall-WindowsFeature -name PowerShell-ISE,Server-Gui-Mgmt-Infra,Server-Gui-Shell (进入核心模式)
Uninstall-WindowsFeature -name Server-Gui-Mgmt-Infra (仅删除服务器管理器图形化组件)
2. 对于进入无图形管理模式的环境(如Server core模式)需要启用服务器管理器功能,则需要通过Powershell命令进行添加。
Add-WindowsFeature -name PowerShell-ISE,Server-Gui-Mgmt-Infra,Server-Gui-Shell �CRestart
此外,还需要被远程管理的服务器缺省启用了允许远程管理,也可以通过图形界面或者Powershell的cmdlet在本地启用或禁止远程管理:
1. 在本地图形界面服务器管理器中通过远程管理属性修改阻止或启用选项
2. 通过Powershell(需要以管理员身份运行)启用(这也是一站式的配置会同时启用所有所需的防火墙例外规则)
Configure-SMRemoting.exe -Enable
服务器管理器这个管理组件其实也可以安装在Windows 8的主机上,可在Windows 8系统上通过http://www.microsoft.com/zh-cn/download/details.aspx?id=28972单独下载并安装这个组件;不过该组件并不提供对Windows 8的远程管理,而仅仅只能针对服务器的版本进行管理。
安装在Windows 8下的RSAT远程服务器管理工具截图
其实我感觉保留服务器管理器的界面还是很强大而且非常有必要的,关于这个管理工具的强大功能可以参考http://windowsarchitecture.files.wordpress.com/2012/12/windows-server-2012-server-manager.pdf;它底层连接.NET Framework,Windows Management framework 3.0,Windows Remote Management ( WinRM) , 更可以快速连接和生成Powershell脚本,利用它你也可以轻松再对管理的远程主机启用Powershell和远程桌面,因此是个非常有效的一体化远程管理工具。
上面我们提到了Windows Remote Management (WinRM)这个顾名思义就是Windows 远程管理,它是微软基于业界标准Web Service管理协议WS-MAN(一种允许不同的供应商的硬件及操作系统进行互操作,防火墙友好的标准基于 SOAP的协议)因此,WinRM 提供防火墙友好方法的可互操作的方式访问远程系统。它是由新的 CIM cmdlet 使用的远程处理机制;
它不但提供了对前面提到的服务器管理器的支持,更提供了对强大的命令行和脚本语言Powershell的支持。
我无意展开对WinRM的讨论,暂时我们需要知道这是远程软硬件互操作性的基础就可以了。其实远程管理可以通过WinRM使用 WinRM 脚本对象、 WinRM 命令行工具或 Windows 远程 Shell 命令行工具实现。可以获得BMC管理数据,对远程 Windows 的操作系统如Windows Server 2012的计算机进行管理,管理数据可以由 WMI提供;请注意只是底层可以使用WMI提供,与WMI不同的是并不使用DCOM通信而且处理数据也不是对象型的而是基于序列化的XML格式;另外针对类似IPMI管理也可以通过在WMI的Povider上提供标准的类实现和获取。
WinRM2.0从Windows Vista SP1,Windows Server 2008就开始提供了支持,对于Windows Server 2012来说是内建启用并支持了,而Windows 8虽然包含了这个组件,但是默认情况下并没有启用,因此要执行远程管理的话就需要启用这个功能,才能提供同通过Powershell进行远程管理的功能。
首先,我们可以先确认WinRM服务的启动状态,Status Running代表服务已经启动了(还需要确认启动类型为自动)。
PS C:\Users\shzhai> get-service �Cname winrm
Status Name DisplayName
------ ---- -----------
Running winrm Windows Remote Management (WS-Management)
如果没有启用的话,我们可以通过Powershell中提供的
Enable-PSRemoting 函数进行配置。该function会执行:
1. 启动或重新启动(如果已启动) WinRM 服务
2. 将 WinRM 服务启动类型设置为“自动”
3. 创建侦听程序以接受任意 IP 地址上的请求
4. 为 WS-Management 通信启用 Windows 防火墙入站规则例外(仅适用于 http)
对于该函数流程和步骤需要进行交互配置确认,为了简便可以一概确认默认值,因此只需要执行
Enable-PSRemoting �CForce 就可以了。
配置完成后,可以通过Test-WSMan命令测试WinRM已经正确配置好并可以建立远程连接了。例如 Test-WSMan �Ccomputername cnshzhai
我差点忘了,在多数情况下对于远程主机不在一个域环境是可以管理的,但如果不是一个受信域主机,则远程主机会拒绝验证你的凭据。所以,需要启用身份验证就要先将远程计算机添加到 WinRM 在本地计算机的受信任主机的列表里面。
例如 :
winrm s winrm/config/client '@{TrustedHosts="远程计算机"}'
好了,至此~尽情享受Windows Server 2012和Windows 8远程管理带给你的便利性吧~:-)