已经有一些最近缠着我约的PowerShell。其实,这种事情已经可能总是窃听我。但是,当我看到这个系列:“Hyper-V的WMI使用PowerShell脚本“在虚拟化团队的博客。我因为某些原因变得恼火。
这里是东西。在我看来PowerShell中已成为被困在一个WMI泥沼。出于某种原因,默认的做法已成为“PowerShell的十岁上下的”使用WMI完成系统管理任务的脚本。换句话说,而不是创建一个集的cmdlet,WMI变为手来完成任务的车辆。
现在,不要误会我的意思,我喜欢WMI。事实上,我经常使用WMI我自己的脚本中。但是,WMI是在对接工作与(是的,PowerShell的大幅提高这方面的经验)一个痛苦和我是一个怪胎脚本。在另一方面,PowerShell的应该是对IT-PRO。我知道有很多的IT Pro'ers的,他们不喜欢,甚至在PowerShell中使用WMI。
例如,对于在Hyper-V的例子,我参考前面,有一个张贴题为:“Hyper-V的WMI使用PowerShell - 第4和1负”。在该发布中,两个实施例中给出的是显示了如何使用关机WMI。第一个例子的虚拟机使用PowerShell中,并且是唯一的长三行。
$ VM = GET-WmiObject可以 - 命名根\虚拟化 - 查询 “SELECT * FROM Msvm_ComputerSystem其中的ElementName = 'Vista的'”
$ ShutdownIC = GET-WmiObject可以 - 命名根\虚拟化 - 查询 “{$ VM}的社员其中AssocClass = Msvm_SystemDevice ResultClass = Msvm_ShutdownComponent”
$ ShutdownIC.InitiateShutdown( “真”, “需要关机”)
第二个例子使用C#和为约40线长。显然,PowerShell的方法是一个巨大的进步。然而,这并不意味着没有余地更加完善。纵观PowerShell的例子,我仍然看到一个混乱的烂摊子,其中一组的cmdlet将极大地提高一个管理员的经验。也许是这样的:
$ VM = GET-hvvm -name “myvm123”
停止hvvm $ VM -shutdown
这看起来很简单,但是,出于某种原因,MS产品组和其他第三方似乎在强迫的PowerShell + WMI群众坚持。而不是开发一个强大的集,管理员可以用它来管理其系统的cmdlet。我们都交给一个WMI提供程序。:<(
幸运的是,并非所有丢失的Hyper-V。似乎有人已经采取了手电筒,创建一组
的cmdlet功能。你可以在这里得到这些功能:“PowerShell的管理图书馆的Hyper-V”。