Windows PowerShell去年问世,得到了许多.net博客的好评(Hanselman浮现在脑海中)。它似乎被吹捧为一个伟大的新工具,以某种方式使您在命令行上所做的一切变得更容易,并与.Net集成。但是,我读的越多,它似乎就越成为一个对IT专业人员来说很棒的工具,而对开发人员来说并没有多大用处。
你在开发工作中使用PowerShell吗?如果是这样,怎么样?值得学习吗?
注意:到目前为止看到响应后,我认为结论PowerShell对.Net开发人员非常有用是有效的。但是,下面没有一个答案可以标注为答案(所以请原谅我不这样做)。我正在投票给我发现有帮助的每个答案。
我是一名管理员,只是从“开发”世界开始,但我发现PowerShell在很多方面对开发人员非常有用。
我把它用于IT Pro类型的东西(它很棒),但是我不认为我已经将它用于开发 - 偶尔会快速尝试像String.Format这样的东西。我将要做的就是为我们的一些应用程序开发powershell命令行开关 - 允许管理员通过powershell执行用户管理等任务,但我不认为这就是你的意思。
在我看来,WPS是一种让您的生活更轻松地完成所需事情的方法。我不认为你会发现WPS集成到FireFox或Quicken中,但是这些团队可能会用它来做那些事情......简而言之,“WPS不能让你的程序,WPS让你的程序变得更容易。” ; O)
我用它来自动化尽可能多的东西。一个例子是Web UI Automation,以简化应用程序开发/测试。
我也用它来为各种程序生成随机输入文件。例如,一个应用程序需要一个XML文件,我有一个脚本来构建该文件,其中包含随机值和基于当前时间的唯一ID。
我没有大量使用它,但我每天都使用它。
我使用PoSH进行任何'重复'工作,我将为管理网络,域,计算机,AD用户,文本编辑,文件搜索,文件服务器迁移,监控以及玩得开心!
我用它来进行多个过程。对于某些cmd无法做到的事情。
这绝对值得学习。你有转换文字吗?你有没有操纵过XML?你有没有自动化什么?简单的例子。有人给你一个逗号分隔文件,你需要从中提取一些字段以导入到其他工具/数据库或为你的程序创建一些列表。
如果csv在文件的第一行中有字段名称,则可以在Powershell中执行以下操作:
$Data = import-csv "something.csv"
然后,您可以使用字段名称来引用您的数据。如果您有一个名为SSN的字段,那么您可以说$ Data [n] .SSN。您还可以将import-csv命令传递给处理数据的内容,包括将其作为XML / html或任何您想要的内容导出,只需几个命令即可。 Powershell充满了这样的东西。
它是一个工具,可以让您轻松访问工作站和服务器上的大量内容,包括完整的.NET库。这是一种不针对某类人的工具。也许只是管理员类型已经很快意识到它是多么有用。我每天都使用它。
为了真正回答问题,我用它来自动化我每天做的事情。我试图使它成为我的单一脚本语言,取代我在perl,python,vbscript,.bat / .cmd中所做的事情,以及我将创建的一个小实用程序/转换程序。
你可以讨厌Powershell,但它对你来说仍然非常有用。我将它用于小而重要的单行类型的东西或非常小的脚本。它实际上无法与C#进行比较,因此只要有任何复杂性或重要的潜在重用,我就会切换到C#。另外,重要的是,Powershell非常时髦,我想每次都从头开始重新创建解决方案,否则我会忘记怪癖,其中有很多。我听过其他人也这么说!
它真正有用的例子:
我刚刚完成了一个项目的第1版,该项目托管了PowerShell运行时以在远程系统上执行任务。我完全不同意PowerShell不是开发人员的工具。
作为基于.NET的产品,它直接类似于.NET编程。整个.NET程序可以在PS中进行原型化,也可以使用很少的oneliner来测试方法的功能......等等。 PS的语言架构师专门设计PS的语法接近C#,这意味着在编写PS脚本和C#代码时很少有上下文切换(我最近不得不做的事情)。你使用PS语言已经基于.NET语言已经很难获得的知识。
作为一种自动化工具,它非常棒。它可以本机访问WMI,ADO,ADSI,.NET,COM,还可以点焊以与其他任何东西配合使用。仅这一点就可以使任何Windows自动化更容易,更强大。对系统的访问量与其他一些语言(VBscript,Python)并行,但语言的易用性和.NET框架的好处意味着某些PS脚本将现有代码(代码重用)捆绑在一起而不是浪费你的时间写另一个文件压缩例程(例如......)
已经有一些项目正在制作构建工具(psake浮现在脑海中),以使开发人员的生活更轻松。像Powershell Community Extensions这样的项目展示了日常开发人员可以实现的强大扩展功能。我同意上面的一些海报,我认为在设置构建环境或使用数据进行开发任务时所做的一切都可以用PS完成,如果不是更快/更容易/更好,但同样如此。
詹姆士
它永远不会被用作我的开发角色的一部分,但我偶尔会得到一个任务,我会写一个小程序来自动化,我现在强迫自己在powershell中做,并且花费的时间更少。
例如,我最近使用xcopy将数十万个文件从一个服务器移动到另一个服务器,忘记设置该属性以保留文件的创建日期。 Powershell来救援。在十分钟内,我编写并测试了一个脚本,复制了创建日期而无需重新复制文件。
@EdSwangren - 如果你必须主要在Windows平台上工作并在.NET空间工作,我会全心全意地建议花时间学习PowerShell。它可以利用您现有的.NET体验和代码,与COM,WMI和ADSI配合使用。它允许您访问Windows平台上的所有内容(而且只是V1)。 V2正在积极开发中(CTP2现已上市),将包括更多远程处理,STA线程和许多其他改进。
许多供应商也支持PowerShell - 从提供网络cmdlet的软件到Citrix和VMWare,通过PowerShell提供管理API。
我对实际的开发工作使用它很少。我已经用它来自动设置虚拟目录并执行一个scipt,在我们所有的dev机器上使用相同的设置设置IIS
就个人而言,我正在使用Python来自动执行任务,如果需要,可以使用WMI。我认为这种组合涵盖了我的大部分需求。
我测试了PowerShell,它看起来很好,但它不值得学习一个全新的工具。除此之外,如果您需要或想要(PowerShell Live),甚至recipes完成任务而不必为自己传递整个学习曲线,那么在线掌握PowerShell有很好的资源。
虽然我还没有学会如何完全使用它,但我是一个粉丝,因为它支持大多数(如果不是全部)Unix命令,我熟悉使用命令行进行导航。如果您有* nix经验并且正在Windows上进行开发,我建议您使用它,因为您只需要记住一组命令。
然而,拿我所说的一粒盐。在构建和编译时,我使用命令行功能。