PowerShell 等价于 Unix `which` 命令?

Her*_*rms 120 windows unix powershell which

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

有很多次我想知道我从命令行运行的东西的位置。在 Unix 中,我只做which <command>,它告诉我。我在 PowerShell 中找不到等效项。

小智 100

这是在 Stack Overflow 上被问到和回答的:相当于 PowerShell 中的 *Nix 'which' 命令?

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

新别名 which get-command

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

"`nNew-Alias which get-command" | 添加内容 $profile

最后一行开头的 `n 是为了确保它将作为一个新行开始。


小智 67

从 PowerShell 3.0 开始,您可以执行以下操作

(Get-Command cmd).Path
Run Code Online (Sandbox Code Playgroud)

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

(gcm cmd).Path
Run Code Online (Sandbox Code Playgroud)

  • 如果`Get-Command` 找到多个结果,则返回一个数组。此外,如果它找到的命令不是可执行文件,则 `Path` 未定义(`$null`)。这使得这里的答案在没有大量修改的情况下对于一般用途是不切实际的。对于这两种情况的一个很好的例子,试试`Get-Command where`。 (4认同)
  • @mastazi:但是对于内置函数来说这是失败的,与例如 **zsh** 的 `which` 相比,这是一种回归。(顺便说一下,`where` 实际上是一个 *Windows* 实用程序,它可以做许多不同的事情,其中​​一个 *大致* 近似于沿着 `PATH` 搜索命令。)此外,**没有* * 一个解释如何做被问到的问题的答案是错误的*和*还有另一个在此基础上稍微复杂的事情。 (3认同)

szx*_*szx 12

我只是在 Powershell 中做where.exe <command>。这是我所知道的最简单的方法。顺便说一句,这.exe部分很重要。


小智 10

同样在 2008 年回答:Windows 命令行上是否有等效的“which”?

where如果您安装了资源工具包,请尝试该命令。

答案中最重要的部分:

Windows Server 2003 及更高版本提供了WHERE执行某些功能的命令,尽管它匹配所有类型的文件,而不仅仅是可执行命令。

[剪辑]

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


小智 7

试试这个: get-command [你的命令]


小智 5

function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
Run Code Online (Sandbox Code Playgroud)