我正在争论我是否应该学习PowerShell,还是坚持使用Cygwin/Perl脚本/Unix shell脚本等等。

PowerShell的好处是,没有Cygwin的队友可以更容易地使用脚本;然而,我不知道我是否真的会写那么多通用脚本,或者人们是否会使用它们。

Unix脚本功能如此强大,PowerShell是否足以让我们切换到它呢?

以下是我在PowerShell中寻找的一些具体内容(或等效内容):

grep 排序 uniq Perl (PowerShell与Perl的能力有多接近?) AWK sed File(提供文件信息的命令) 等。


当前回答

无论如何,我都不是一个非常有经验的PowerShell用户,但是我接触到的一点点PowerShell给我留下了深刻的印象。您可以将内置的cmdlet链接在一起,以完成您在Unix提示符下可以完成的任何事情,并且还有一些额外的优点,用于执行诸如导出到CSV、HTML表以及更深入的系统管理类型的作业。

如果你真的需要像sed这样的东西,总有UnixUtils或GnuWin32,你可以很容易地与PowerShell集成。

作为一个长期的Unix用户,我在习惯命令命名方案时遇到了一些麻烦,如果我了解更多的。net,我肯定会从中受益更多。

所以本质上,我认为如果windows独有的特性不构成问题,它是非常值得学习的。

其他回答

为什么不两者都用呢?在Cygwin中调用PowerShell脚本,就像其他解释性脚本(如Perl)一样。

为此,我编写了https://bitbucket.org/jbianchi/powershell,以便Bash包装器在Cygwin中调用powershell.exe。它可以用作PowerShell .exe .ps1脚本的第一行shebang(因为PowerShell也使用“#”作为注释)。参见https://bitbucket.org/jbianchi/powershell/wiki/Home获取示例

如果你喜欢shell脚本,你一定会爱上PowerShell!

从微软命令Shell (Ars Technica)的导游之旅开始。

我已经使用了一些PowerShell来实现脚本自动化。虽然环境看起来比Unix shell考虑得更周到,但实际上使用对象而不是文本流要笨拙得多,而且过去30年开发的许多Unix设施仍然缺失。

Cygwin仍然是我在Windows主机上选择的脚本环境。在完成任务方面,它肯定胜过其他选择。

无论如何,我都不是一个非常有经验的PowerShell用户,但是我接触到的一点点PowerShell给我留下了深刻的印象。您可以将内置的cmdlet链接在一起,以完成您在Unix提示符下可以完成的任何事情,并且还有一些额外的优点,用于执行诸如导出到CSV、HTML表以及更深入的系统管理类型的作业。

如果你真的需要像sed这样的东西,总有UnixUtils或GnuWin32,你可以很容易地与PowerShell集成。

作为一个长期的Unix用户,我在习惯命令命名方案时遇到了一些麻烦,如果我了解更多的。net,我肯定会从中受益更多。

所以本质上,我认为如果windows独有的特性不构成问题,它是非常值得学习的。

当您将PowerShell与Cygwin/Perl/Shell组合进行比较时,请注意PowerShell仅表示该组合的“Shell”部分。

然而,您可以从PowerShell调用任何命令,就像从cmd.exe或Cygwin中调用一样。它没有重新实现指定的函数,当然也不能与Perl相比。

它“只是”一个外壳,但它使编程变得更容易,为。net世界提供了一个舒适的接口。

还要记住,PowerShell需要Windows XP、Windows Server 2003或更高版本,这可能会造成问题,具体取决于您的IT基础设施。

更新:

我不知道我的回答会引发什么样的哲学辩论。

我在这个问题的背景下发布了我的答案:将PowerShell与Cygwin、Perl和Bash进行比较。

PowerShell是一个shell,因为它在内置命令、命令行、用户函数和外部命令(.exe、.bat、.cmd)之间没有语法上的区别。只有在调用中添加名称空间或对象才能调用。net方法。

它的可编程性来源于。net框架,而不是任何特定于PowerShell“语言”的东西。

我想说,一旦Bugzilla或MediaWiki被实现为运行在web服务器上的PowerShell脚本,我相信PowerShell就是一种“脚本语言”。

在那之前,享受比较吧。