Apa yang setara dengan Windows dari perintah "yang" di Unix? Apakah ada perintah PowerShell yang setara?

Jawaban:

79

Beberapa versi Windows (saya pikir Windows 2003 ke atas) memiliki perintah where:

c:\>where ping
C:\Windows\System32\PING.EXE
Randy Levy
sumber
5
wherebekerja untuk saya di Windows 7
Nam G VU
6
Ini hanya bekerja di cmd, bukan di PowerShell (menurut pengalaman saya)
Thomas
where /r c:\ fileNamemenambahkan / rc: \ memungkinkan saya untuk melakukan pencarian rekursif mulai dari root drive C menggunakan Windows 7 Professional tampaknya tidak ada di access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/…
CrandellWS
6
di Powershell Anda harus mengatakan where.exe pingkarena wheresecara default alias Where-Objectcmdlet yang merupakan cerita yang sama sekali berbeda
maoizm
where.exesecara eksplisit daripada wherebekerja untuk saya di PowerShell
drkvogel
36

Ya, Get-Commandakan menemukan semua perintah termasuk yang dapat dieksekusi:

PS\> Get-Command ipconfig

Jika Anda ingin membatasi perintah hanya untuk executable:

PS\> Get-Command -CommandType Application

Akan menemukan semua ongkos di jalan Anda. Ada alias untuk penggunaan interaktif:

PS\> gcm net* -CommandType Application

Untuk mendapatkan jalur yang dapat dieksekusi, Anda bisa menggunakan Pathproperti objek yang dikembalikan. Sebagai contoh:

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

Untuk info lebih lanjut, jalankan man Get-Command -full.

pengguna10404
sumber
2

Selain user10404, perintah bantuan akan bekerja pada alias, sehingga Anda dapat menggunakan nama perintah yang sama (gcm) untuk bantuan dan penggunaan interaktif:

help gcm -Parameter *
# or
man gcm -Par *
yzorg
sumber
2

Jika Anda ingin membuatnya pendek, buat satu baris file that.cmd dengan konten

echo %~$PATH:1

Ini akan mencari parameter pertama (% 1) diumpankan ke skrip dan menampilkan path lengkap file yang ditemukan. Tempat yang baik untuk meletakkan skrip ini di windows 10 adalah% LOCALAPPDATA% \ Microsoft \ WindowsApps \ which.cmd

Dan Anda mendapatkan perintah Anda di jalur.

c:\>which cmd.exe

c:\>echo C:\Windows\System32\cmd.exe
C:\Windows\System32\cmd.exe
Manu
sumber
1

where.exesecara eksplisit daripada wherebekerja untuk saya di PowerShell:

PS C:\Users\birdc> where ping
PS C:\Users\birdc> where.exe ping
C:\Windows\System32\PING.EXE
drkvogel
sumber
Bekerja pada Windows 10 1903.
Ultrasonic54321
Di PowerShell? Saya menggunakan Windows 10 Pro 1903, dan tidak where pingmemberi saya apa pun di PowerShell.
drkvogel
Maaf saya tidak jelas. Maksud saya where.exe.
Ultrasonic54321