Windows PowerShell漫谈

      Windows PowerShell是我在研究win7新特性的时候发现的新工具,起初没有对它产生太大的兴趣,只是简单看看了有关它的介绍、简单使用了一下,感觉上它和cmd.exe没有本质区别。对它产生兴趣是一个纯粹的偶然,有一次一个硬件工程师同事让我帮忙联调串口,我才发现win7下没有超级终端,结果那个同事给了我一个串口助手。本着对问题刨根问底的精神我上网搜了一下有关win7和超级终端的问题,才发现win7下真的没有超级终端,有些网友推荐说PowerShell具备超级终端的功能,可以调试串口,于是我就有了研究一下PowerShell的想法,因为我不太喜欢用串口助手之类的工具。

      由于对PowerShell完全没有概念,索性直接看帮助文档,当然我看的是Windows PowerShell ISE的帮助文档。这里插一句,Windows PowerShell是专为系统管理员设计的新Windows命令行shell,而且PowerShell是支持脚本编写的,所以微软专门为PowerShell开发了一个集成脚本环境,也就是Windows PowerShell ISE。由于常年从事windows开发,使用windows产品,在windows的桌面环境下工作,所以我对命令行的环境没有什么亲切感。不过Windows PowerShell ISE给了我不一样的感受,他是一个对PowerShell命令行功能全部支持的可视化环境,而且提供比PowerShell更丰富的脚本开发功能,并且有良好的可扩展性。经过简单的试用,我就喜欢上了这种对于我来说全新的电脑管理方式,于是开始认真研读其帮助文档,希望有更大的收获。

      从10年末开始断断续续读PowerShell的帮助文档并尝试使用PowerShell,一直到2011年的1月1日读完了帮助文档中所有的用户手册部分。我不知道是我愚笨还是有些网友开玩笑,我没有找到任何与串口调试有关的内容。不过如果说通过脚本开发可以为PowerShell扩展出类似超级终端的功能,我想是可以的,但我不想那样去做。如果有朋友知道怎样用PowerShell调试串口还请告诉我,我在这里谢过了。虽然初衷没有实现,但是通过对PowerShell的研究还是有不少收获的,这里简单总结一下,也和大家分享一下学习心得。

      首先,通过对PowerShell的研究可以看出微软的一个明显的策略方向,也就是重拳出击服务器市场。众所周知,微软的windows在个人PC领域可谓一家独大,但是其在服务器应用上就业绩平平了。根据微软公司的计划,2009年将会实现所有微软公司的GUI管理工具通过PowerShell作为中间层对服务程序进行管理,现阶段例如Exchange 2007等已经支持PowerShell的管理。可以预期,使用PowerShell管理Windows服务器指日可待。届时,微软很有可能推出全新的命令行操作系统用于服务器管理,实现真正意义上的与UNIX之类的操作系统产品的竞争。当然,操作系统的竞争不在于其交互或表现形式,而在于系统内核及其对设备的管理。可如果微软真正实现了命令行式的服务器系统,谁又能担保他不会再在内核层上做以改进。呵呵,个人推测而已。

      再说说PowerShell本身吧,与接受和返回文本的大多数shell不同,Windows PowerShell是在.NET Framework公共语言运行时(CLR)和.NET Framework的基础上构建的,它接受和返回.NET Framework对象。这一点是它最吸引我的地方,一个完全的面向对象的命令行工具。可能你不会理解,这种机制有什么好处?简单看一下PowerShell的帮助文档就可以发现,PowerShell的所有命令都是通过操作.NET Framework的对象完成的,还可以通过New-Object使用.NET Framework运行时可调用包装来创建COM对象。通过对帮助文档的研读和实际使用的感受我们可以更好的理解.NET Framework的对象的使用方法和windows的工作方式。如果你是一个C#的程序员工,这一点就更为明显。假如你想完成一些对于操作系统管理的需求和任务,完全可以先在PowerShell中查找相关命令并使用它们来获取对你有用的信息,甚至可以通过管道定向轻易获取到相关命令的结果,而且最令人兴奋的是你获取到的是一个.NET Framework的对象而不是简单的文本。

      最后想说的一点是,PowerShell提供了丰富的远程管理功能。我们可以在一台主机上根据网络内的计算机名通过PowerShell的远程会话实现多机管理,我觉得这几乎就是云管理。另外,PowerShell可以实现根据不同使用者设置的不同配置文件来区分不同的会话环境。我们可以自行设置会话中的变量、函数、脚本以及各种丰富的配置信息。这一切最为直接的结果就是,我们可以很方便的通过PowerShell实现对一个网络内的所有主机的管理,加上为个人会话环境保存的配置文件可以方便的实现管理移植,使计算机管理更加得心应手。

       我接触shell的东西不多,只是简单了解cmd.exe的一些相关命令。所以当我了解到PowerShell的上述功能时我觉得眼睛一亮,可能在有些朋友看来我有些井底之蛙了。不过有一点我觉得我的认识因该还是正确的,对于一个程序员掌握一款命令行工具应该还是必要的,尤其是他所从事开发的目标系统的相应命令行管理工具。从这个角度看,研究一下PowerShell应该是windows程序员的不错的选择。

猜你喜欢

转载自blog.csdn.net/xianglitian/article/details/6113725