Powershell 远程管理 (一)
忙里偷闲挤出点时间写写PS在Windows不错的管理方式。Powershell 2.0以后可以说是有了质的变化,Modules的加入、ISE、WinRM远程管理的支持,今天主要讲一系列PowerShell在企业级应用的远程管理,其实也是我这次在部署一个应急方案使用的一些脚本和方案的集合吧。(我这里是 域环境,读者可以自己搭建测试)
首先,我们需要安装Powershell 2.0和WinRM 2.0 ,这个是作为WindowsUpdate附加补丁得,可以通过可选补丁进行安装
选中,直接安装就好了,如果要给所有的服务器安装这个补丁,那么可以考虑用AD环境下的WSUS来安装这个补丁(关于WSUS的配置我会在以后讲述Win2k8 WSUS的文章下详细说明)。
Powershell好处之一就是文档很详细,我们不清楚要多使用Get-Help来查看帮助,可以先查阅一些关于远程的相关资料:Get-Help about_remote*,我在使用Powershell 1.0的使用做远程是相当的痛苦的,每次都要使用WMI的Win32_Process来创建远程进程,2.0提供了交互式的Session 以及比较好用的Invoke-Command ,同时对其他的命令提供了-ComputerName的参数,管理起来更加方便。
先说下使用WMI方式做远程调用吧,首先确认目标机器(需要管理的机器)的远程管理(Remote Administration)的防火墙是开启Inbound 允许您的IP传入的。
打开Windows高级防火墙 –> 传入规则(InboundRules) ->远程管理(Remote Administration)->双击打开对话框
选中 Advanced 选择自己的作用域 我这里选择的All,以及在Scope下找到远程IP地址(Remote IP) 加入 Localsubset 本地子网 然后保存 启用规则 如图:
这样一下,我们就允许本地子网对 这台机器的 访问远程管理端口了(当然你可以根据自己,只给定一个IP访问目标机器的远程管理端口防火墙)。
如果是域环境,要开启这个策略,我们可以建立一个GPO,在
编辑GPO对象的策略->计算机配置->管理模版->网络->网络连接->防火墙->域->Windows Firewall:Allow Inbound remote Administration exception的策略,
启用并且选择自己需要加入的IP:
然后应用到自己的OU 或者 整个站点(我建议您在部署入域的服务器先做好各种测试和策略,在入域以后 马上就会立即生效,那么也会比较方便,做远程管理呢。)
先讲述三个命令:
Get-WmiObject (1.0+)
Invoke-WmiMethod (2.0)
Invoke-Command (2.0)
大家自行认真查看对应的帮助吧,Get-Help Get-WmiObject –Full
WMI调用的话,2.0直接使用Invoke-WmiMethod
比如,我们经常用到的,更新租策略,我记得有一次,我失误导致大部分机器的3389端口全部关闭,远程链接全部失败。我更新组策略,但是没有GPO生效都要超过90分钟的,不得已 一些机器的admin$的共享也关闭,不能使用psexec 来远程调用命令。于是我就用WMI的方式来主动更新组策略:
{
param
(
[String][parameter(Mandatory=$True)]
[String]$RemoteComputer
)
Invoke-WmiMethod -Class Win32_Process -Name Create -ArgumentList "GPUPDATE /FORCE" -EnableAllPrivileges -ComputerName $RemoteComputer
}