【IT168 技术】 PowerShell的第一个版本并不能执行脚本也不能从中央工作站或服务器查询远程计算机。然而,默认安装在Windows 7以及Windows Server 2008 R2上的PowerShell的最新版本Windows远程管理(WinRM)采用“单一管理平台”架构进行集中式管理。(请注意:最新版的PowerShell现在已经支持Windows XP和Vista,可以从官方网站下载。)
尽管有些企业可能至少有三分之一的产品的功能可以使用PowerShell实现,但是多数产品需要安装代理。但是,PowerShell是操作系统内置的而且是一种脚本语言,因此即使和其他产品相比,PowerShell也可能是一款功能强大的资产。
使用PowerShell进行桌面管理
整个管理控制的第一步是确保桌面在运行最新版本的PowerShell而且已经启用了WinRM。
为启用WinRM,需要以管理员身份在本地计算机的PowerShell提示符下执行如下命令:Enable-PSRemoting –force。
该命令将会开启一个恰当的防火墙端口用于和中央管理工作站进行通信。工作站现在已经可以执行远程PowerShell命令并进行查询了。
除此之外,您应该以本地管理员身份输入如下命令设置运行脚本的安全性:Set-ExecutionPolicy Unrestricted。
当然,取决于对安全性的要求,您可能会选择一个不同的脚本执行安全级别,比如RemoteSigned。这一安全级别确保了在交互式会话中运行的所有脚本在执行时不会出错。通过在PowerShell提示符下运行help Set-ExecutionPolicy –detailed命令可以更多的了解执行策略的设置及其更多的分支。
借助PowerShell远程调用,中央工作站可以通过三种方法与远程计算机进行通信。第一种方法允许查询一个或多个计算机;另两种方法更多的是一对一会话。“Invoke-Command”方式是最为常用的一种方法。“Interactive”方式与通过SSH或Telnet访问远程计算机类似,“Implicit”方式将远程PowerShell会话引入到了集中会话当中。
使用内置的PowerShell cmdlets
最新版的PowerShell包括了30多种向工作站发送远程命令的cmdlets。几乎所有内置的cmdlets都能接受–ComputerName参数,向启用WinRM的所有桌面发送远程命令。
例如,Get-EventLog – Logname Application –EntryType Error –ComputerName mypc命令检索包含来自计算机名为mypc的错误事件的应用事件日志记录。您可以扩展–ComputerName参数以包含多台计算机,比如–ComputerName mypc, suzipc, tompc。
您也可以使用PowerShell提供的脚本语言功能将参数转变为动态变量。然后就可以运行成百上千个桌面的远程命令了。
我经常使用的cmdlet是Get-Counter,该命令允许您近乎实时地查看远程计算机的性能指标。将该命令应用于远程桌面的扩展列表或者通过动态变量查看组织中所有计算机的计数器。试着在PowerShell提示符下输入help get-counter –full命令查找当前环境下可用的语法。
另外,可以在远程计算机上执行清单功能。对于软件清单来说,可以使用Get-WMIObject cmdlet查询所有已安装。MSI软件的WMI类。对于不是通过。MSI 安装程序进行安装的软件,可以查询所有软件记录的注册表。微软官方网站上的一篇TechNet文章是您构建软件清单工具的一个很棒的资源。
对于硬件清单来说,您应该使用另一个WMI查询指定硬件类。通过这篇PowerShellPro文章获取该脚本,这个脚本我已经使用过几次。
帮助编写PowerShell脚本的免费工具
对于生活在脚本世界的管理员来说,使用命令行下的cmdlets是很自然的事儿。但是对于没有太多命令行接口(CLI)经验的管理员或者想避免非常长的“单行方式”的管理员来说-Quest软件公司提供的免费工具PowerGUI可能会非常有帮助。
PowerGUI是PowerShell的前端图形用户界面。其非常好的特性之一就是使用PowerPacks,PowerPacks由脚本专家所创建并编译为单个文件。引入这些脚本后,PowerGUI将为您键入PowerShell命令。您可以在ScriptEditor中看到实际的脚本并使用这些脚本创建您自己的脚本。
一旦精通了用于远程桌面的PowerShell环境而且在编写脚本时变得自信,我推荐您看一下由Sapien开发的PrimalForms工具,可以使用该工具将您的脚本合并到图形用户界面当中。使用PrimalForms,您可以为您自己或者其他在命令提示符下感到不舒服的用户放置一个图形化前端。例如我创建的一个脚本的GUI前端已经成为了帮助桌面管理员的主要工具。可以在NTPRO.NL查看很棒的使用PrimalForms创建PowerShell GUI的例子。
网络上有大量用于PowerShell以及PowerShell脚本的资源。在创建您自己的脚本前一定要把这些资源找出来。大多数情况下,已经有人写了一个脚本恰好是您想要的,或者您可以找到能够进行定制的脚本。