IT业已经达成共识的一点是,一个可以提供基于标准的、跨平台的、可扩展的自动化工具是值得投资的。但是不同供应商提供的GUI都有其优势,对于大多数自动化需求来说都可以使用PowerShell。不管你讨厌还是喜欢它,都需要使用它——你将会主动或者被迫使用它进行自动化。
使用Unix操作系统的IT管理员已经使用PowerShell数十年了。他们知道真正的自动化意味着能够在同一时间实现许多对象的实时互动,并且自动化脚本是最为灵活的方式。这通过命令行shell来实现,而最主流的shell就是PowerShell。其已经被VMware、微软SCVMM和Citrix XenApp所采纳。
下面是一个例子。业务部门需要部署一台新的Web服务器,在上面运行Active Server Pages .NET应用程序。传统的解决方案可能是这样:
• 登陆服务器
• 打开GUI服务器管理器
• 选择需要的角色和角色服务
• 重启服务器
而基于PowerShell的解决方案如下:
• 登陆服务器
• 打开PowerShell,并输入:
• PS> Install-WindowsFeature Web-Server, web-Asp-Net
对于小规模的需求来说这没有很大区别。如果负载均衡集群中的50台Web服务器都需要运行新的ASP.NET应用程序,GUI管理员的工作就会变成下面这样:
• 登陆服务器
• 打开GUI服务器管理器
• 选择需要的角色和角色服务
• 重启服务器
• 下一台服务器(重复50次)
这种解决方案需要几个小时到几个星期的工作量,并且不会产生任何日志文档,还有可能出现忘记添加ASP.NET等这种人为错误。而自动化专家使用下面的方式来完成这个任务:
• 打开PowerShell,并输入:
• PS> Invoke-Command -ComputerName Web1,Web2,Web3 {Install-WindowsFeature Web-Server, web-Asp-Net}
是的,电脑主机名可以从一个文本文件、.csv文件或者***从活动目录中进行获取,但是命令基本保持一致。这个例子的意义在于说明通过使用PowerShell Remoting,你可以在几分钟之内完成对50台服务器的安装和配置工作。这是一个简单的例子,但是意思却十分清晰:我可以在几分钟内完成所有工作,我对于业务的价值要高于GUI管理员。
这些脚本是必须的(或者逐条的)指令发给电脑,来部署和配置软件。PowerShell v4提供了一种类似于Unix中的Puppet或Chef的定义方式,用来管理和控制系统配置。
再回到我的关于岳父和T系列的经历。他知道如何启动汽车,但是如果我想要启动汽车,就需要找到岳父来替我启动,这样就不需要我自己理解任何步骤。
PowerShell v4拥有“理想状态配置”,意味着我可以定义一个“我需要50台具有某种功能的新Web服务器”这样的需求,之后资源(一步一步的指令)就会执行我的计划,而不需要我理解具体细节。这不几仅仅可以用于应用程序和服务器的部署,它还能防止大规模“漂移”(以后其他管理员配置一些不必要的配置)。
PowerShell自动化为IT管理员提供了一个跨平台的工具来部署和维护其理想状态。它能够让CIO在几分钟内部署50台新的Web服务器。总之,如果恰当地使用自动化,就能够使得IT部门更好的满足业务需求。
碰巧我的岳父喜欢老旧T系列的启动流程。但是对于关键业务需求来说,***通过自动化实现,以保证安全性和可靠性。