当我在CMD中运行where
时,我得到输出:
C:\Users\Ragesh> where calc
C:\Windows\System32\calc.exe
但是在PS中也是如此:
PS C:\data\code> where calc
PS C:\data\code>
输出在哪里?!
答案 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 calc
(Where-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
希望这有帮助。