Jalur ke Powershell.exe (v 2.0)

114

Di manakah lokasi Powershell (versi 2.0)? Apa jalur ke Powershell.exe? Saya memiliki Windows Server 2008 dan Powershell terinstal. Saat saya melihat folder ini:

PS C:\Windows\System32\WindowsPowerShell> dir


    Directory: C:\Windows\System32\WindowsPowerShell


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----         20.4.2010     17:09            v1.0

Saya hanya memiliki Powershell v1.0. Tapi saat saya mengetik

PS C:\> $Host.version

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1


PS C:\>

Ini menunjukkan bahwa saya telah menginstal v2.0.

jjoras.dll
sumber
8
"V1.0" yang Anda lihat di atas hanyalah nama direktori, bukan nomor versi sebenarnya.
doobop
Lihat saja lokasi target tautan PowerShell
oxfn

Jawaban:

171

Saya percaya itu masuk C:\Windows\System32\WindowsPowershell\v1.0\. Untuk membingungkan yang tidak bersalah, MS menyimpannya di direktori berlabel "v1.0". Menjalankan ini di Windows 7 dan memeriksa nomor versi melalui $Host.Version( Tentukan versi PowerShell yang diinstal ) menunjukkan 2.0.

Pilihan lainnya adalah mengetik $PSVersionTablepada prompt perintah. Jika Anda menjalankan v2.0, hasilnya adalah:

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4927
BuildVersion                   6.1.7600.16385
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

Jika Anda menjalankan versi 1.0, variabel tidak ada dan tidak akan ada keluaran.

Lokalisasi PowerShell versi 1.0, 2.0, 3.0, 4.0:

  • Versi 64 bit: C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \
  • Versi 32 bit: C: \ Windows \ SysWOW64 \ WindowsPowerShell \ v1.0 \
doobop
sumber
1
Mungkin itu kasus jalur hard-code yang ingin mereka pertahankan kompatibilitasnya? Microsoft menjadi Microsoft
Tiago Leite
6
"Untuk membingungkan orang yang tidak bersalah" akan menjadi salah satu kutipan favorit saya.
simlev
48

Menurut saya $ PsHome memiliki informasi yang Anda cari?

PS.> $ PsHome
C: \ Windows \ System32 \ WindowsPowerShell \ v1.0

PS.> Dapatkan-Bantuan about_automatic_variables

TEMA
    about_Automatic_Variables ...

Simon B
sumber
29

Ini salah satu caranya ...

(Get-Process powershell | select -First 1).Path

Ini mungkin cara yang lebih baik, karena mengembalikan klik pertama pada jalur, sama seperti jika Anda menjalankan Powershell dari command prompt ...

(Get-Command powershell.exe).Definition
Nathan Hartley
sumber
3
Sejauh yang saya ketahui, ini adalah jawaban yang lebih baik daripada yang saat ini memberikan suara hingga 35. Pertanyaan asli tampaknya tentang jalur ke eksekusi, dengan informasi versi yang kebetulan untuk pertanyaan tersebut. Jawaban ini secara langsung menjawab pertanyaan itu, bahkan melewati jawaban "yang seharusnya" dan membiarkan seseorang mengetahui dengan tepat di mana exe berada di sistem mereka sendiri, bahkan jika sistem itu berbeda dari default. (Inilah yang saya cari ke sini, jadi saya menghargainya.)
Todd Walton
Mencari berdasarkan makhluk yang dapat dieksekusi powershell.exeagak terlalu santai, karena Anda dapat dengan mudah mengganti nama yang dapat dieksekusi menjadi powershell.exe, dan membuatnya mengambil proses itu sebagai gantinya. Get-Process -Id $PIDakan berhasil, meskipun saya tidak yakin versi apa $PIDyang diperkenalkan.
Charles Grunwald
Saya melihat poin "terlalu santai" Anda, namun, menggunakan $ PID akan mengembalikan host saat ini, yang mungkin bukan penerjemah Powershell. Seperti Powershell_ise.exe, misalnya.
Nathan Hartley
mungkin sejak November 2011 properti sudah berubah. Bagi saya (pada Juli 2016, menggunakan Windows Server 2012) properti .Sumber tidak ada, sebagai gantinya, saya dapat menggunakan properti. Definisi yang mengembalikan: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" . Variabel $ PSHome saya berisi: "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0" Selain itu, jika Anda menggunakan get-process, pertimbangkan untuk menggunakan 'powershell *' daripada hanya PowerShell, jika Anda menggunakan PowerShell_ise. HTH
Marcelo Finki
Jawaban diubah dari menggunakan .Source menjadi .Definition.
Nathan Hartley
12

Itu selalu C: \ Windows \ System32 \ WindowsPowershell \ v1.0. Dibiarkan seperti itu karena kompabilitas ke belakang adalah apa yang saya dengar atau baca di suatu tempat.

ravikanth
sumber
2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Jika SystemRoot bukan "C: \ Windows"
Matius