Что Windows эквивалентно команде «what» в Unix? Есть ли эквивалентная команда PowerShell?

Ответы:

79

Некоторые версии Windows (я думаю, что Windows 2003 и выше) имеют команду where:

c:\>where ping
C:\Windows\System32\PING.EXE
Рэнди Леви
источник
5
whereработать для меня в Windows 7
Nam G VU
6
Это работает только в cmd, а не в PowerShell (по моему опыту)
Thomas
where /r c:\ fileNameдобавление / RC: \ позволило мне выполнить рекурсивный поиск , начиная с корня диска С помощью Windows 7 Professional, кажется, не быть в access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/...
CrandellWS
6
в Powershell вы должны сказать, where.exe pingпотому что whereпо умолчанию псевдоним Where-Objectкомандлета, что совершенно другая история
маоизм
where.exeявно, а не whereработает для меня в PowerShell
drkvogel
36

Да, Get-Commandнайдет все команды, включая исполняемые:

PS\> Get-Command ipconfig

Если вы хотите ограничить команды только исполняемыми файлами:

PS\> Get-Command -CommandType Application

Найдет всех бывших на вашем пути. Существует псевдоним для интерактивного использования:

PS\> gcm net* -CommandType Application

Чтобы получить путь к исполняемому файлу, вы можете использовать Pathсвойство возвращаемого объекта. Например:

PS\> (Get-Command notepad.exe).Path

Для получения дополнительной информации, запустите man Get-Command -full.

user10404
источник
2

В дополнение к user10404 команда help будет работать с псевдонимами, поэтому вы можете использовать то же имя команды (gcm) для справки и интерактивного использования:

help gcm -Parameter *
# or
man gcm -Par *
yzorg
источник
2

Если вы хотите сделать его коротким, создайте файл с одной строкой which.cmd с содержимым

echo %~$PATH:1

Будет выполнен поиск первого параметра (% 1), переданного в сценарий, и будет показан полный путь к найденному файлу. Хорошее место для размещения этого скрипта в Windows 10 - это% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

И вы получите свою команду в пути.

c:\>which cmd.exe

c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
Manu
источник
1

where.exeявно, а не whereработает для меня в PowerShell:

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
drkvogel
источник
Работает на Windows 10 1903.
Ultrasonic54321
В PowerShell? Я на Windows 10 Pro 1903, и where pingничего не дает мне в PowerShell.
drkvogel
Извините, мне было неясно. Я имел в виду where.exe.
Ultrasonic54321