我意识到的明显差异是能够连接到某些MS产品,如Exchange。 但是对于不需要pipe理这些产品的人来说,Powershell有什么优势呢? 学习Powershell的原因是什么(假设我用bash和cygwinstream畅)?
Jeffrey Snover(PowerShelldevise器)在StackOverflow上有一个很好的答案:
最明显的优点是:只要没有文本输出(或传统命令)在stream水线中被涉及,您就不会通过pipe道移动文本,而是使用.NET框架对象的实例及其所有属性和方法。
这样可以实现更具performance力和更模糊的pipe道处理,而且完全不受语言环境和语言设置的影响(例如,考虑date或数字格式,以及如何将它们作为string正常处理)。
这也意味着您可以在脚本环境中访问大量的.NET框架function。
没有进入关于范式的价值判断,PowerShell的主要优势是.Net集成和在职 – 从Windows 2008服务器开始,它默认捆绑在一起,并在2003和2003 R2的服务包中加载。
公平地说,脚本还有其他几个select – 例如Perl和Python。 如果你想要本地的.Net集成,Python也给你使用IronPython的选项。 事实上,IronPython只需将其放在一个目录中就可以令人满意地安装。 您可以简单地将其捆绑到应用程序中,而不需要单独的安装步骤。
Powershell的关键力量是一把双刃剑。 stream媒体.net对象是非常有用的,它有其优点,它放置了更多的假设组件的能力,以良好的框架。 为了真正起作用,你需要用cmdlet来包装东西。 虽然文本输出比较低级,并且需要parsing,但是为了更好地利用框架,组件上的负担更小。
随着时间的推移,我期望看到更多的Windows生态系统(包括MS和第三方组件)带有cmdlet包装器,因此它们可以与Powershell一起使用。 在这种情况下,Powershell的情况将会变得更加强大。
历史上,从pipe理angular度来看,Windows的一个关键传统弱点是其糟糕的脚本支持。 MS在几年前就已经认识到这一点,经过几次蹩脚的尝试(例如WSH),Powershell是MS迄今为止最可靠的解决这一缺陷的努力。
我认为对于PowerShell来说,最大的胜利是你可以pipe任何东西而不必分析文本和/或grok sed和awk。 不要把那些讨厌的东西带进equision,把powershell想象成具有自动 sed和awk来连接pipe道中的命令。
优点:-
任务自动化: – 向1000台机器添加用户等任务是一项繁琐的手工任务。 但是在powershell的帮助下,你只需要编写一个简单的脚本,脚本运行,它将自动configuration所有的客户端。 因此,通过自动重复步骤节省时间。 可以开发和调度Windows PowerShell备份\还原脚本(使用Windows任务计划程序),而pipe理中心用于一次性备份和还原。 Windows PowerShell具有运行SQL快照而不是生产数据库的优势。 Windows PowerShell命令的参数之一将导致生成SQL快照,然后Windows PowerShell将针对快照而不是生产数据库运行操作。 这将减less备份操作对生产环境的资源影响。 使用Windows PowerShell,SharePointpipe理员将对备份或还原的选项有更细化的控制。
远程处理function的改进: – 意义是双重的,首先,Windows 7桌面可以使用PowerShell命令与服务器进行通信。 因此,使用Windows 7笔记本电脑的技术人员可以通过运行PowerShell脚本来远程configuration其服务器。 其次,驻留在服务器上的PowerShell中编写的客户端login脚本可以更轻松地在Windows 7上运行。 同样使用powershell,我们可以轻松地控制远程机器,可以执行重要的任务,并可以轻松地应用这些变化的大规模。 远程处理使用networking资源。 所以当我们使用PowerShell的时候,我们并没有使用GUI,因此减less了某个任务所需的带宽,解决了networking过载问题。
一致性: – 如果您有完成任务的设置过程,使用Windows Powershell将确保您永远不会错过任何步骤,尽可能自动化,并让Powershell提示您input无法自动执行的内容。
.NET支持: – Powershell支持.NET框架。 因此,所有的系统函数都可以很容易地添加到powershell脚本中,从而帮助程序员开发脚本。 因此,使VDI的任务自动化变得更容易,更简单和高效。
减less手动工作: – pipe理员现在可以通过编写脚本来远程创build,删除或修改虚拟机的设置。 他没有必要去个人电脑上完成工作。 所有的计算机上也可以接受编写的脚本。 所以pipe理员不需要一遍又一遍的重写。
可重用性: – 为了执行特定任务而编写的脚本可以存储起来,也可以与其他脚本组合起来执行不同的任务。 所以重复的任务可以通过运行脚本以更简单的方式执行。 这节省了pipe理员在configuration机器上的时间和金钱。
stream水线支持: – 对于PowerShell来说,最大的胜利就是你可以pipe任何东西而不需要parsing文本。 您可以将一个命令的输出作为input提供给新的集合,从而可以解决复杂的任务。
Cygwin不保证可用于每个版本的Windows。 最后我检查了它在64位机器上是有问题的。 Powershell正在成为Windows的默认命令shell,并将提供对Windows机器上所有资源的“本机”访问。