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.


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 \

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 ...


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

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.


2
% SystemRoot% \ system32 \ WindowsPowerShell \ v1.0 \ powershell.exe. Jika SystemRoot bukan "C: \ Windows"
Matius
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.