好吧,您的第一个问题是您正在将外壳(PowerShell)与终端进行比较。在Linux中,终端是一种用于发送和接收基于字符的I / O的终端,它假定在其后方具有交互式用户(换句话说,它是用于包含 Shell 的GUI应用程序)。在 Ubuntu终端中运行的最常见的shell之一是Bash,但还有其他一些。
离线用户告诉我,Windows PowerShell是一种使Unix管理员对使用Windows更加自在的尝试,但并没有做太多解释。
确实,正确的说法是PowerShell是Windows 在交互式且可编写脚本的命令行环境中公开了许多WMI,COM和.NET对象模型-并且此命令行环境继续借鉴了许多概念-例如管道和I / O重定向-从Unix外壳,就像老的DOS(2.0及以上)command.com
,并cmd.exe
做了。管道可在PowerShell中与对象一起使用。如果您了解足够的信息,则可以即时创建HTML,甚至可以创建Excel电子表格。当然,这是对旧cmd.exe
外壳的升级/替换,它与Windows NT 4.0相比并没有太大变化。
关于语法,它不太像Unix shell(尽管最终这些cmdlet都不/
用作开关或参数指示符),但是经典Unix命令有很多别名-例如ls
在PowerShell窗口中输入将类似于dir
。但是这些仅仅是别名(“ Get-Alias”列出了这些吗?)。
关于PowerShell的功能,您确实具有VBScript和CScript的类似功能(仅脚本编写),尽管这两个功能都早于.NET。
Unix的人在大多数时间使用Bash时不必做的一件事就是要熟悉程序员或对象可能非常复杂的对象模型,这是许多高级和简单的PowerShell任务所必需的。但这仅是可能的,因为对于许多标准POSIX命令,纯文本输出都有明确的约定。Windows没有这种传统-似乎更喜欢您使用mmc
控制台来执行管理任务,并且多年来在此添加命令。此外,许多著名的Unix工具非常复杂,需要在使用前一些研究- rsync
,wget
和许多其他。效率可能取决于人们对他们正在使用的工具的了解程度之多。