Powershell 相对于 cygwin/unix-shell 的优势是什么

Mos*_*she 9 powershell shell bash cygwin

我知道的明显区别是能够连接到某些 MS 产品,例如 Exchange。但是对于不必管理此类产品的人来说,Powershell 的优势是什么?学习 Powershell 的原因是什么(假设我精通 bash 和 cygwin)?

Tom*_*lak 18

最明显的优势:只要管道中不涉及文本输出(或遗留命令),您就不会通过管道移动文本,而是 .NET 框架对象的实例及其所有属性和方法。

这允许更有表现力和更少歧义的管道处理,也完全不受区域设置和语言设置的影响(例如,考虑日期或数字格式以及您必须如何正常将它们视为字符串)。

这也意味着您可以在脚本环境中访问大量 .NET 框架功能。


Con*_*lls 6

不考虑对范式的价值判断,PowerShell 的主要优势是 .Net 集成和在职性 - 从 Windows 2008 服务器开始,它默认捆绑,并在 2003 和 2003 R2 上加载到服务包中。

公平地说,脚本编写还有其他几种选择 - 例如 Perl 和 Python。如果您想要本机 .Net 集成,Python 还为您提供了使用 IronPython 的选项。事实上,只要将 IronPython 放在一个目录中,它就会令人满意地安装。您可以轻松地将它捆绑在一个应用程序中,而无需单独的安装步骤。

Powershell 的关键优势有点像一把双刃剑。虽然流式 .net 对象非常有用并且有其优势,但它对组件与框架良好配合的能力提出了更多假设。为了让它真正起作用,你需要用 cmdlet 包装东西。虽然文本输出的级别较低并且需要解析,但它对组件的负担较小,可以很好地与框架配合使用。

随着时间的推移,我希望看到更多的 Windows 生态系统(MS 和第三方组件)带有 cmdlet 包装器,以便它们与 Powershell 一起使用。当这种情况发生时,Powershell 的情况将变得更加强大。

从历史上看,从管理角度来看,Windows 的主要传统弱点之一是其糟糕的脚本支持。MS 几年前就认识到了这一点,经过几次蹩脚的尝试(例如 WSH)Powershell 是 MS 迄今为止修复该缺陷的最可靠的努力。


Ric*_*den 2

Jeffrey Snover(PowerShell 设计者)在 StackOverflow 上给出了一个很好的答案:

/sf/ask/40153641/#573861