当我在终端中输入 dir /A 时,我得到了理想的输出,但是当我在 Powershell 中输入相同的内容时,我得到了
dir : Cannot find path 'C:\A' because it does not exist.
+ CategoryInfo : ObjectNotFound: (C:\A:String) [Get-ChildItem], ItemNotFoundException
+ FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand
等等。无论我输入什么dir /A .
,或者dir . /A
我认为 Powershell 是终端的扩展,因此在终端上运行的所有内容都将在 ps 上扩展。我如何找到这种行为背后的原因?
命令提示符确实与 PowerShell 不同。
dir
是命令提示符的内部命令,Powershell没有此功能。Powershell 有个 cmdlet:,
get-childitem
也可以获取某个文件夹中的所有文件,但是和 cmd 的dir
功能相比有明显的差别。为了让人们快速上手 powershell,他们在 cmdlet 中添加了别名
dir
,ls
和。这意味着,即使你可以在 powershell 中输入,但所有参数的工作方式都与 cmd 不同。例如,在 cmd 中,你可以输入,在 powershell 中,你可以输入。由于是 的别名,你也可以输入。gci
get-childitem
dir
dir /s
get-childitem -recurse
dir
get-childitem
dir -recurse
确实,所有可以在 cmd 中运行的常规命令(调用 .exe 文件)都可以在 PowerShell 中运行。但是,Dir 不是带有 .exe 扩展名的程序,而是 cmd 的内部函数。