Почему команда "where" не выводит какой-либо вывод при работе в PowerShell?

Когда я запускаю where в CMD, я получаю вывод:

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

Но то же самое в PS:

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

Где идет выход?!

Ответы

Ответ 1

Следующие работали для меня:

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

При вводе where в PS это не то же самое, что и выполнение 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) можно использовать вместо where.exe. Вот пример функции, чтобы сделать функцию Get-Command точно так же, как where.exe. Если вы поместите это в свой профиль PowerShell, он всегда будет доступен в вашем сеансе.

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

Следующие ссылки могут быть полезны -

Эквивалент * Nix ', который' командует в Powershell?

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

Надеюсь, что это поможет.