Windows PowerShell去年问世,得到了许多.net博客的好评(Hanselman浮现在脑海中).它似乎被吹捧为一个伟大的新工具,以某种方式使您在命令行上所做的一切变得更容易,并与.Net集成.但是,我读的越多,它似乎就越成为一个对IT专业人员来说很棒的工具,而对开发人员来说并没有多大用处.
你在开发工作中使用PowerShell吗?如果是这样,怎么样?值得学习吗?
注意:到目前为止看到响应后,我认为结论PowerShell对.Net开发人员非常有用是有效的.但是,下面,我可以为标签没有一个答案的答案(所以请原谅我不能这样做).我正在投票给我发现有帮助的每个答案.
这绝对值得学习.你有转换文字吗?你有没有操纵过XML?你有没有自动化什么?简单的例子.有人给你一个逗号分隔文件,你需要从中提取一些字段以导入到其他工具/数据库或为你的程序创建一些列表.
如果csv在文件的第一行中有字段名称,则可以在Powershell中执行以下操作:
$Data = import-csv "something.csv"
然后,您可以使用字段名称来引用您的数据.如果您有一个名为SSN的字段,那么您可以说$ Data [n] .SSN.您还可以将import-csv命令传递给处理数据的内容,包括将其作为XML/html或任何您想要的内容导出,只需几个命令即可.Powershell充满了这样的东西.
它是一个工具,可以让您轻松访问工作站和服务器上的大量内容,包括完整的.NET库.这是一种不针对某类人的工具.也许只是管理员类型已经很快意识到它是多么有用.我每天都使用它.
为了真正回答问题,我用它来自动化我每天做的事情.我试图使它成为我的单一脚本语言,取代我在perl,python,vbscript,.bat/.cmd中所做的事情,以及我将创建的一个小实用程序/转换程序.
我是一名管理员,只是从"开发"世界开始,但我发现PowerShell在很多方面对开发人员非常有用.
任务自动化 - > Lee Holmes(PowerShell团队的开发人员)发布了一个名为BgShell的概念验证,它基本上是在Windows窗体应用程序中托管的PowerShell运行时,它监听按键并启动基于它们的PowerShell编写的操作.它还包括一些剪贴板自动化.
快速访问.NET框架.您不必编译和运行某些东西或使用其他程序(如Snippet Compiler)来测试某些功能.将程序集加载到PowerShell会话中并与之交互.您将获得PowerShell的所有可发现性(如Get-Member)以探索您的对象.
易于构建特定于域的语言.James Kovacs用PowerShell编写了一个名为Psake的简单构建脚本语言.
它可以为您的应用程序提供脚本语言.由于PowerShell是09通用工程标准的一部分,因此许多Microsoft应用程序将具有PowerShell接口,并且对语言语法的熟悉程度将会增加.您可以通过在应用程序中嵌入PowerShell运行时并为用户提供脚本界面,选择他们可以访问的对象来利用这些知识.
同样,如果您需要为应用程序创建命令行界面,PowerShell提供了解析参数和其他基本任务所需的大部分底层管道,只留下业务逻辑供您编写,并提供与其他应用程序的一致界面(例如,如果您有需要管理的用户帐户(尚未与Active Directory集成,管理员可以使用Quest AD Cmdlet和您的应用程序界面)Get-QADUser | New -MyApplicationUser并完成.Exchange 2007团队做得非常好.所有功能都基于PowerShell cmdlet,GUI调用cmdlet并向用户显示正在运行的内容,因此他们可以基于此构建脚本.
这真酷!在大约250行(包括评论)中,Rob Foust和Jeff Hicks在PowerShell中编写了一个网络嗅探器.比WinDump更容易使用轻量级故障排除.
社区 - 有一个围绕PowerShell的优秀社区,包括开发人员.在PowerShellCommunity.org上了解更多信息.
你可以讨厌Powershell,但它对你来说仍然非常有用.我将它用于小而重要的单行类型的东西或非常小的脚本.它实际上无法与C#进行比较,因此只要有任何复杂性或重要的潜在重用,我就会切换到C#.另外,重要的是,Powershell非常时髦,我想每次都从头开始重新创建解决方案,否则我会忘记怪癖,其中有很多.我听过其他人也这么说!
它真正有用的例子:
临时文本处理.有时人们会给我一个大数据或SQL文件,他们希望它被操纵成一种不同的形式,有时候是以非常复杂的方式.仅这一点就为我节省了不可思议的时间.它通常涉及许多特殊的单行和中间文件.现在人们知道我可以做到这一点,他们倾向于把这些项目交给我.或者在某些情况下,他们如此惊叹,以至于他们自己学习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完成,如果不是更快/更容易/更好,但同样如此.
詹姆士