在PowerShell中运行时,为什么'where'命令不显示任何输出?

时间:2013-05-27 14:51:39

标签: powershell

当我在CMD中运行where时,我得到输出:

C:\Users\Ragesh> where calc
C:\Windows\System32\calc.exe

但是在PS中也是如此:

PS C:\data\code> where calc
PS C:\data\code>

输出在哪里?!

1 个答案:

答案 0 :(得分:11)

以下对我有用:

PS C:\Users\Bill> where.exe calc
C:\Windows\System32\calc.exe

在PS中输入where时,它与执行where.exe

不同
PS C:\Users\Bill> where  <press ENTER>

cmdlet Where-Object at command pipeline position 1
Supply values for the following parameters:
Property:

因此,当您键入where calc时,它正在执行Where-Object calcWhere-Object的别名为where?),因此不会返回任何内容,也不会执行where.exe calc

您可以使用Get-Command(别名gcm)cmdlet而不是where.exe。以下是使Get-Command函数与where.exe完全相同的示例函数。如果您将其放在PowerShell profile中,则会在您的会话中始终可用。

function which ($command) {
    Get-Command -Name $command -ErrorAction SilentlyContinue | 
        Select-Object -ExpandProperty Path -ErrorAction SilentlyContinue
}

以下链接可能有用 -

Equivalent of *Nix 'which' command in Powershell?

https://superuser.com/questions/34492/powershell-equivalent-to-unix-which-command

希望这有帮助。