PowerShell是否准备好替换Windows上的Cygwin shell?

我在辩论是否应该学习PowerShell,或者只是坚持使用Cygwin / Perl脚本/ Unix shell脚本等。

PowerShell的好处在于,没有Cygwin的队友可以更轻松地使用这些脚本; 但是,我不知道我是否真的在写这么多通用脚本,或者甚至人们会使用它们。

Unix脚本非常强大,PowerShell足够接近以保证切换?

以下是我在PowerShell中查找的一些特定事物(或等价物):

  • grep的
  • 分类
  • uniq的
  • Perl(PowerShell与Perl的功能有多近?)
  • AWK
  • SED
  • 文件(提供文件信息的命令)
  • 等等

  • 工具只是工具。
    他们帮助或者他们不帮助。
    你需要帮助,否则你不需要帮助。

    如果您了解Unix并且这些工具可以在Windows上执行您需要它们的功能 - 那么您就是一个快乐的人,无需学习PowerShell(除非您想探索)。

    我最初的意图是在Windows中包含一套Unix工具,并用它来完成(我们团队中的许多人都具有深厚的Unix背景和对该社区的尊重。)我发现的是,这没有真的帮助很大。 原因是awk / grep / sed不能对付COM,WMI,ADSI,注册表,证书库等等。换句话说,UNIX是一个围绕文本文件进行自我调整的整个生态系统。 因此,文本处理工具是有效的管理工具。 Windows是一个完全不同的生态系统,围绕API和对象进行自我调整。 这就是我们发明PowerShell的原因。

    我认为你会发现,当文本处理不能在Windows上获得你想要的东西时,会有很多场合。 那时候,你会想要拿起PowerShell。 注 - 这不是一个全部或没有处理。 在PowerShell中,您可以调用Unix工具(并使用其文本处理或PowerShell的文本处理)。 您也可以从Unix工具调用PowerShell并获取文本。

    再次 - 这里没有宗教信仰 - 我们的重点是为您提供成功所需的工具。 这就是为什么我们对反馈如此热情。 让我们知道我们在工作中失败的位置,或者您没有所需工具的地方,我们会将其列入清单并加以解决。 坦率地说,我们正在挖掘一个30年的洞,因此需要一段时间。 也就是说,如果你拿起Windows Server 2008 / R2的测试版和/或我们的服务器产品的测试版,我想你会对这个漏洞的填补速度感到震惊。

    关于使用情况 - 我们已经有至少350万次下载。 这不包括在Windows Server 2008中使用它的人,因为它作为可选组件包含在内,不需要下载。 V2将在所有版本的Windows中发布。 除了Server Core之外的所有版本,它都是默认开启的,它是一个可选组件。 在Windows 7 / Windows Server 2008 R2发布后不久,我们将在所有平台XP和更高版本上提供V2。 换句话说 - 您的学习投资将适用于大量的机器/环境。

    最后一条评论。 如果/当你开始学习PowerShell时,我认为你会很开心。 很多设计都受到我们的Unix背景的严重影响,所以虽然我们有很大的不同,但是你会很快找到它(在你过度诅咒它不是Unix之后:-))。 我们知道人们对学习的预算非常有限 - 这就是为什么我们在一致性方面超强的核心。 你会学到一些东西,然后你会反复使用它。

    实验! 请享用! 从事!


    grep的

    Select-String cmdlet和-match运算符使用正则表达式工作。 你也可以直接使用.NET的regex支持来获得更高级的功能。

    分类

    Sort-Object更强大(比我记得* nix的sort )。 允许对任意表达式进行多级排序。 在这里,PSH对底层类型的维护有所帮助; 例如DateTime属性将被排序为DateTime而不必确保格式化为可排序的格式。

    uniq的

    Select-Object -Unique

    Perl(PowerShell与Perl功能有多近?)

    就Perl特定领域支持库的广度而言:无处不在(尚未)。

    对于一般编程,PSH肯定更加紧密和一致,并且更容易扩展。 文字改写(munging)的一个间隙东西等同于Perl的..操作。

    AWK

    自从使用awk(必须大于18年,因为后来我只是使用perl)已经足够长了,所以无法真正发表评论。

    SED

    [往上看]

    文件(提供文件信息的命令)

    PSH在这里的优势并不在于它能够处理文件系统对象(它在这里获得完整的信息, dir返回FileInfoFolderInfo对象)就是整个提供者模型。

    您可以将注册表,证书存储区,SQL Server,IE的RSS缓存等作为与文件系统相同的cmdlet进行导航的对象空间。


    PSH绝对是Windows上的前进方向。 MS已经使其成为未来非家用产品的一部分要求。 因此,在Exchange中支持丰富的支持,这只会扩展。

    最近的一个例子是TFS PowerToys。 许多TFS客户端操作都是在不必每次启动tf.exe的情况下完成的(这需要新的TFS服务器连接等),并且明显更容易进一步处理数据。 以及允许广泛访问整个TFS客户端API的细节比在TF.exe的团队资源管理器中公开的更详细。


    作为一名职业生涯专注于Windows企业开发的人员,从1997年到2010年,显而易见的答案是Powershell出于上述所有良好理由(例如,它是MS的企业战略的一部分;它与Windows / COM / .NET很好地集成;以及使用对象而不是文件提供了“更丰富”的编码模型)。 出于这个原因,我在过去2年左右一直在使用和推广Powershell,并明确表示我遵循“比尔之语”。

    然而,作为一名实用主义者,我不再确定Powershell是一个很好的答案。 虽然它是一个出色的Windows工具,并且为填补Window命令行中的历史性漏洞提供了一个非常需要的步骤,但正如我们都在观察MS对消费计算漏洞的控制,MS似乎越来越有可能会进行大规模的战斗以保留它的操作系统这对未来的企业来说非常重要。

    事实上,鉴于我发现我的工作越来越多地处于异构环境中,我发现现在使用bash脚本更有用,因为它们不仅可以在Linux,Solaris和Mac OS X上工作,还可以与在Windows上的Cygwin的帮助。

    因此,如果您认为操作系统的未来是商品化的而不是垄断的话,那么选择敏捷的开发工具策略,在可行的情况下远离专有工具似乎是有意义的。 但是,如果你看到你的未来被所有那是雷德蒙德统治的话,那就去Powershell吧。

    链接地址: http://www.djcxy.com/p/19697.html

    上一篇: Is PowerShell ready to replace my Cygwin shell on Windows?

    下一篇: How to exclude several lines around match with grep or similar tool?