相当于Unix“哪个”命令的PowerShell?


69

PowerShell是否具有与which大多数(如果不是全部)Unix Shell中找到的命令等效的命令?

有很多次我想从命令行了解我正在运行的内容的位置。在Unix中,我只是这样做which <command>,它告诉我。我在PowerShell中找不到等效项。

Answers:


71

在Stack Overflow上有人问及答:在PowerShell中相当于* Nix'哪个'命令?

在PowerShell中开始自定义配置文件后,我创建的第一个别名是“哪个”。

获得命令的新别名

要将其添加到您的个人资料,请键入:

“`nNew-Alias获得命令” | 添加内容$ profile

最后一行的开始处的`n是为了确保它将以新行开始。


35

从PowerShell 3.0开始,您可以

(Get-Command cmd).Path

与普通的Get-Command相比,它还具有返回a的好处,System.String因此您可以像以前那样获得干净的* nixy单行输出。使用gcm别名,我们可以将其减少到11个字符。

(gcm cmd).Path

4
如果Get-Command找到多个结果,则返回一个数组。此外,如果找到的命令不是可执行文件,Path则未定义($null)。这使得这里的答案在不进行大量修改的情况下对于一般用途是不切实际的。对于这两种情况的一个很好的例子,请尝试Get-Command where
jpmc26 2014年

1
这应该是一个可以接受的答案,因为它实际上告诉您与* NIX命令等效的Powershell,where而不是教您如何在Powershell上设置别名,这不是问题的标题。
mastazi

3
@mastazi:但是失败的内置命令,这是一个回归相比,比如zsh中which。(where,顺便说一下,其实是一个的Windows实用程序,可以做很多不同的事情,其中的一个大致近似于搜索沿着一个命令PATH。)此外,还有没有什么不妥,说明如何做被要求回答在此基础上还有另外一个涉及更多的东西。
SamB

7

在2008年也得到了回答:Windows命令行上是否有“哪个”的等效项?

where如果已安装资源工具包,请尝试使用该命令。

答案的最重要部分:

Windows Server 2003和更高版本提供的WHERE命令可以执行某些操作,尽管它与所有类型的文件都匹配,而不仅仅是可执行命令。

[片段]

在Windows PowerShell中,您必须输入where.exe


3
function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.