一个体面的 Windows 命令行 shell

int*_*tar 6 windows shell

肯定有人为 Windows 编写了一个像样的 shell。

我在找

a) 或多或少类似于普通的 linux shell(即历史、完成等)

b) 安装简单的东西(比 Cygwin 更容易,当我尝试它时,它看起来并不那么好。)

如果是,则加分:

c) 自由(如在演讲中)

d) 允许在路径中使用正斜杠而不是反斜杠

Rya*_*her 25

与任何其他命令外壳相比,Powershell 具有显着的优势。它是面向对象的。

在 cmd、bash 等中,像 dir/ls 这样的命令的输出实际上是一个字符串数组。如果您通过管道将其传递给另一个命令,那么您必须处理字符串。在 Powershell 中,dir cmdlet 实际上提供了一个文件对象数组,您可以通过管道将这些对象传递给另一个命令并通过属性对这些对象进行操作。Powershell 确实是一个交互式的 .Net shell。每个 cmdlet 实际上都是一组 .Net 对象的包装器。

来自 Microsoft 的所有下一代管理界面实际上都是在 Powershell 中实现的,并且 GUI 界面是围绕 Powershell 命令的包装器,类似于执行 GUI 管理工具的“Unix 方式”。

下面是一个从 Active Directory 角度来看的示例...您可以使用 cmd.exe shell 和一个实用程序(如 dsquery.exe)来对对象进行 LDAP 查询。但是你会得到一个可分辨名称的列表。然后,您可以将这些 DN 处理为字符串等。在 Powershell v1 或 v2 中,您可以安装和使用Quest 管理单元,管理单元为您提供诸如get-QADUser 之类的工具。当您使用get-QADuser查询 AD 时,返回值是 User 对象的集合。所以像这样的命令:

$users = get-QADUser svc_*
Run Code Online (Sandbox Code Playgroud)

将返回一个您可以按属性处理的集合,例如按您将使用的 HomeDirectory 对它们进行排序:

$HmDirs = get-QADUser svc_* | sort-object HomeDirectory
Run Code Online (Sandbox Code Playgroud)

没有其他外壳可以为 Windows 提供此功能。Powershell 绝对是要走的路。

更新:PowerShell v2 现在作为Windows Management Framework 的一部分发布,但如果你想获得 Microsoft AD cmdlet,你必须运行 server 2008 R2 或 Windows 7,否则它仍然是 Quest cmdlet。


Sha*_*son 10

贝壳。努夫说。:)