В PowerShell Get-Command
< / a> найдет исполняемые файлы где угодно в $Env:PATH
.
$ Get-Command eventvwr
CommandType Name Definition
----------- ---- ----------
Application eventvwr.exe c:\windows\system32\eventvwr.exe
Application eventvwr.msc c:\windows\system32\eventvwr.msc
А поскольку в PowerShell можно определять псевдонимы, which
можно определить так.
$ sal which gcm # short form of `Set-Alias which Get-Command`
$ which foo
...
команды PowerShell - это не просто исполняемые файлы (.exe
, .ps1
и т. Д.). Они также могут быть командлетами, функциями, псевдонимами, настраиваемыми исполняемыми суффиксами, заданными в $Env:PATHEXT
, и т. Д. _ 9_ может найти и перечислить все эти команды (что очень похоже на type -a foo
в Bash). Одно это делает его лучше, чем where.exe
, which.exe
и т. Д., Которые обычно ограничиваются поиском только исполняемых файлов.
Поиск исполняемых файлов по только части имени
$ gcm *disk*
CommandType Name Version Source
----------- ---- ------- ------
Alias Disable-PhysicalDiskIndication 2.0.0.0 Storage
Alias Enable-PhysicalDiskIndication 2.0.0.0 Storage
Function Add-PhysicalDisk 2.0.0.0 Storage
Function Add-VirtualDiskToMaskingSet 2.0.0.0 Storage
Function Clear-Disk 2.0.0.0 Storage
Cmdlet Get-PmemDisk 1.0.0.0 PersistentMemory
Cmdlet New-PmemDisk 1.0.0.0 PersistentMemory
Cmdlet Remove-PmemDisk 1.0.0.0 PersistentMemory
Application diskmgmt.msc 0.0.0.0 C:\WINDOWS\system32\diskmgmt.msc
Application diskpart.exe 10.0.17... C:\WINDOWS\system32\diskpart.exe
Application diskperf.exe 10.0.17... C:\WINDOWS\system32\diskperf.exe
Application diskraid.exe 10.0.17... C:\WINDOWS\system32\diskraid.exe
...
Поиск пользовательских исполняемых файлов
В отличие от UNIX, где исполняемые файлы - это файлы с установленным битом исполняемого файла (+x
), исполняемые файлы в Windows - это файлы, находящиеся в одном из каталогов, указанных в $PATH
env. переменная, суффиксы имени файла которой указаны в $PATHEXT
env. переменная (по умолчанию .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.CPL
).
Как _18 _ тоже чтит это env. переменную, ее можно расширить, добавив в нее список пользовательских исполняемых файлов. например
$ $Env:PATHEXT="$Env:PATHEXT;.dll;.ps1;.psm1;.py" # temporary assignment, only for this shell's process
$ gcm user32,kernel32,*WASM*,*http*py
CommandType Name Version Source
----------- ---- ------- ------
ExternalScript Invoke-WASMProfiler.ps1 C:\WINDOWS\System32\WindowsPowerShell\v1.0\Invoke-WASMProfiler.ps1
Application http-server.py 0.0.0.0 C:\Users\ME\AppData\Local\Microsoft\WindowsApps\http-server.py
Application kernel32.dll 10.0.17... C:\WINDOWS\system32\kernel32.dll
Application user32.dll 10.0.17... C:\WINDOWS\system32\user32.dll
Дополнительные параметры и примеры см. В Get-Command
.
person
shalomb
schedule
26.11.2014
which
?] [2] [1]: stackoverflow.com/questions/63805/ [2]: superuser.com/questions/34492/ - person Anonymous   schedule 13.12.2011which
. Утилита POSIX -type
. В оболочке C есть команда which, а в некоторых системах она используется как внешний исполняемый файл. Например, в Debian Linuxwhich
происходит из пакета с именемdebutils
. Этот внешнийwhich
не видит встроенных команд оболочки, псевдонимов или функций.type
делает; Вtype
Bash есть возможность подавить это и просто выполнить поиск пути. - person Kaz   schedule 17.04.2015which -a pwd
сtype -a pwd
- person MarcH   schedule 16.10.2019