看到“自动化”这个词大家是不是感觉很振奋呵呵,其实没有那么深奥让我们来渐渐深入学习一下。

在Powershell进阶学习(3)http://lixiaosong.blog.51cto.com/705126/1358425的时候我们留下了一个问题,我们回顾一下:

p_w_picpath

我使用Invoke-command命令远程在bjdc01这台服务器上设置了一个变量,当我在回头调用这个变量的时候发现已经失效了。这是什么原因呢?答案就是到远程计算机的会话失效了。

那么我们如何保持会话那就需要一个session的功能。我们还是举例说明,我们通过session跟bjdc01服务器建立了一个会话,通过invoke-command命令选择-session参数设置了一个变量,发现再次调用这个变量的时候还是有效的。:

p_w_picpath

我们怎么查看是否存在会话呢:

Powershell进阶学习(5)关于Session和自动化_第1张图片

那么建立会话到底给我们带来了哪些方便或者功能的提升呢?我通过measure-command工具对相关的命令进行了执行效率的统计。发现建立session后执行效率大大提升了。

Powershell进阶学习(5)关于Session和自动化_第2张图片

难道仅仅是效率的提升么?我们同时与多个服务器建立了session并在这些服务器上安装了web-server组件

p_w_picpath

复制一个脚本文件到所有的服务器上:

p_w_picpath

同时在相应服务器上运行这个脚本:

p_w_picpath

通过上面的举例说明相信大家已经对session有了一个初步的了解,那么接下来介绍一个session高级的应用。

相信各位windows运维人员在管理计算机的时候,好多时候都是在管理机上或自己的办公机上安装好多服务管理器比如活动目录,DHCP DNS,Exchange管理器等才能获取到相应的cmdlet去管理到想用的服务器那么不安装这些组件可以通过powershell实现么?接下来我们就介绍一下!

我们还是跟服务器先建立一个session会话:

p_w_picpath

通过import-pssession导入了这个回话和活动目录模块。

p_w_picpath

发现已经有了相关的命令了并执行了一条查询:

Powershell进阶学习(5)关于Session和自动化_第3张图片

作为一个Exchange管理员当然最最常见的是管理Exchange的相关命令。怎么实现呢?哈哈相当easy!

PS C:\MailBoxOperate> $bjexbe01=New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://bjexbe01.xxx.com/PowerShell/ -Authentication Kerberos  
PS C:\MailBoxOperate> Import-PSSession $bjexbe01

Powershell进阶学习(5)关于Session和自动化_第4张图片

据说有一种最高级的应用:

举例说明:

当你的环境既有Exchange2007有有Exchange2010的时候,如果进行账户迁移原始的方法是同时安装汇集两个版本的管理器。

现在你可以不用安装管理其只需要同时在管理机上建立两个不同版本服务器的session,但却可以导入这两组命令,将其中一个的前缀设置为2007

另一个前缀设置为2010。就可以同时运行这两款产品。接下来的情况可能就是这样:

get2007user | set2010user 从第一台服务器获取用户,然后在另外一台服务器上进行设置

不过我这里没有现成的环境有环境的大家可以试试!

今天的就讲到这里了!