PowerShell setara dengan perintah Unix `yang`?

69

Apakah PowerShell memiliki setara dengan whichperintah yang ditemukan di sebagian besar (jika tidak semua) shell Unix?

Ada beberapa kali saya ingin tahu lokasi sesuatu yang saya jalankan dari baris perintah. Di Unix saya hanya melakukannya which <command>, dan itu memberitahu saya. Saya tidak dapat menemukan yang setara di PowerShell.

Herms
sumber

Jawaban:

71

Ini ditanyakan dan dijawab pada Stack Overflow: Setara dengan perintah * Nix 'yang' di PowerShell?

Alias ​​pertama yang saya buat setelah saya mulai menyesuaikan profil saya di PowerShell adalah 'yang'.

Alias ​​baru yang mendapatkan perintah

Untuk menambahkan ini ke profil Anda, ketikkan ini:

"` nBaru-Alias ​​yang menerima perintah "| add-content $ profil

`N pada awal baris terakhir adalah untuk memastikannya akan dimulai sebagai baris baru.

Nagul
sumber
35

Pada PowerShell 3.0, Anda bisa melakukannya

(Get-Command cmd).Path

Yang juga memiliki kelebihan dibandingkan vanilla Get-Command mengembalikan System.Stringsehingga Anda mendapatkan output baris * nixy bersih seperti Anda mungkin terbiasa. Dengan menggunakan alias gcm, kita dapat menurunkannya hingga 11 karakter.

(gcm cmd).Path
FLGMwt
sumber
4
Jika Get-Commandmenemukan beberapa hasil, ini akan mengembalikan array. Selain itu, jika perintah yang ditemukannya tidak dapat dieksekusi, Pathtidak ditentukan ( $null). Ini membuat jawaban di sini tidak praktis untuk penggunaan umum tanpa modifikasi berat. Untuk contoh yang bagus dari kedua kasus ini, cobalah Get-Command where.
jpmc26
1
Ini harus menjadi jawaban yang diterima karena itu benar-benar memberi tahu Anda apa yang setara dengan Powershell dari perintah * NIX wheredaripada mengajari Anda cara mengatur alias di Powershell, yang bukan judul pertanyaan.
mastazi
3
@ Mastazi: Tapi itu gagal untuk builtin, yang merupakan regresi dibandingkan dengan misalnya zsh 's which. ( where, omong-omong, sebenarnya adalah utilitas Windows yang dapat melakukan sejumlah hal yang berbeda, salah satunya kira-kira mendekati mencari perintah di sepanjang PATH.) Juga, tidak ada yang salah dengan jawaban yang menjelaskan bagaimana melakukan apa yang diminta dan juga hal lain, sedikit lebih terlibat dibangun di atasnya.
SamB
7

Juga dijawab pada 2008: Apakah ada yang setara dengan 'yang' pada baris perintah Windows?

Coba whereperintah jika Anda telah menginstal Resource Kit.

Bagian terpenting dari jawabannya:

Windows Server 2003 dan yang lebih baru menyediakan WHEREperintah yang melakukan sebagian dari apa yang dilakukan, meskipun cocok dengan semua jenis file, bukan hanya perintah yang dapat dieksekusi.

[menggunting]

Di Windows PowerShell Anda harus mengetik where.exe.

Anonim, tanpa nama
sumber
3
function which([string]$cmd) {gcm -ErrorAction "SilentlyContinue" $cmd | ft Definition}
hen
sumber