Bagaimana saya bisa menentukan versi PowerShell yang diinstal pada komputer, dan memang jika itu diinstal sama sekali?
powershell
MagicAndi
sumber
sumber
$PSVersionTable
lebih dapat diandalkan dan mengembalikan $ PSVersion. Anda juga bisa menggunakan$PSVersionTable.PSVersion
. Bahkan jika Anda terhubung dari jarak jauh ke mesin yang menjalankan versi yang berbeda (invoke-command -computername myRemotePC -Credential foo {$host}
), sepertinya$host
hanya akan menunjukkan versi terendah yang mereka setujui untuk serialisasi. Sementara$PSVersionTable
akan menampilkan versi sebenarnya. Semoga itu akan membantu seseorang ..notepad $profile
dan membuangnyafunction psver { $PSVersionTable; $PSVersionTable.PSVersion }
. Reload dengan. $profile
dan saya cukup mengetikkanpsver
waktu untuk mendapatkan info versi detail dan detail lainnya.Saya akan menggunakan Get-Host atau $ PSVersionTable . Seperti yang ditunjukkan Andy Schneider,
$PSVersionTable
tidak berfungsi di versi 1; diperkenalkan di versi 2.sumber
$host.version
tidak dapat diandalkan - misalnya di powergui, ia mengembalikan versi host powergui yang tidak sama dengan versi engine powershell (yang diinginkan.)Anda dapat melihat variabel bawaan
$psversiontable
,. Jika tidak ada, Anda memiliki V1. Jika memang ada, itu akan memberi Anda semua info yang Anda butuhkan.sumber
Untuk menentukan apakah PowerShell diinstal, Anda dapat memeriksa keberadaan registri
dan
dan, jika ada, apakah nilainya 1 (untuk diinstal), sebagaimana dirinci dalam posting blog Periksa apakah PowerShell diinstal dan versi .
Untuk menentukan versi PowerShell yang diinstal, Anda dapat memeriksa kunci registri
dan
Untuk menentukan versi PowerShell yang diinstal dari skrip .ps1, Anda dapat menggunakan one-liner berikut, seperti yang dijelaskan pada PowerShell.com di Versi PowerShell mana yang Saya Berlari .
Situs yang sama juga memberikan fungsi untuk mengembalikan versi:
sumber
Anda dapat langsung memeriksa versi hanya dengan satu baris dengan menggunakan PowerShell secara eksternal , seperti dari Command Prompt
Menurut @psaul Anda sebenarnya dapat memiliki satu perintah yang agnostik dari tempat asalnya (CMD, PowerShell atau Pwsh). Terima kasih untuk itu.
Saya telah menguji dan bekerja dengan baik pada CMD dan PowerShell.
sumber
cmd
danpowershell
tidak berhasil. Saya akan mengharapkan perilaku yang sama juga. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
bekerja dengan baik.Anda dapat memverifikasi bahwa versi Windows PowerShell diinstal dengan menyelesaikan pemeriksaan berikut:
Di konsol Windows PowerShell, ketikkan perintah berikut di command prompt dan kemudian tekan ENTER:
Anda akan melihat output yang terlihat seperti ini:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
sumber
Disarankan metode maju yang kompatibel oleh Microsoft untuk memeriksa apakah PowerShell diinstal dan menentukan versi yang diinstal adalah untuk melihat dua kunci registri spesifik. Saya telah mereproduksi detailnya di sini jika tautannya putus.
Menurut halaman yang ditautkan:
Untuk memeriksa apakah versi PowerShell diinstal, periksa nilai berikut dalam registri:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Untuk memeriksa apakah PowerShell versi 1.0 atau 2.0 diinstal, periksa nilai berikut dalam registri:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
sumber
Saya menemukan cara termudah untuk memeriksa apakah diinstal adalah untuk:
cmd
,, lalu OK)powershell
lalu tekan kembali. Anda kemudian harus mendapatkanPS
prompt PowerShell :Anda kemudian dapat memeriksa versi dari prompt PowerShell dengan mengetik
$PSVersionTable.PSVersion
:Ketik
exit
jika Anda ingin kembali ke prompt perintah (exit
lagi jika Anda juga ingin menutup prompt perintah).Untuk menjalankan skrip, lihat http://ss64.com/ps/syntax-run.html .
sumber
$host.version
jelas salah / tidak bisa diandalkan. Ini memberi Anda versi hosting yang dapat dieksekusi (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe dll) dan bukan versi mesin itu sendiri.Versi mesin dimuat dalam
$psversiontable.psversion
. Untuk PowerShell 1.0, variabel ini tidak ada, jadi jelas jika variabel ini tidak tersedia, sepenuhnya aman untuk menganggap mesinnya 1.0, jelas.sumber
Menggunakan:
Anda dapat mengunduh skrip terperinci dari Cara menentukan versi PowerShell yang diinstal .
sumber
Cara termudah untuk melupakan halaman ini dan tidak pernah kembali ke sana adalah mempelajari
Get-Variable
:Tidak perlu mengingat setiap variabel. Cukup
Get-Variable
sudah (dan "Seharusnya ada sesuatu tentang versi").sumber
$PSVersionTable
Untuk memeriksa apakah PowerShell diinstal gunakan:
Untuk memeriksa apakah RC2 atau RTM diinstal, gunakan:
Sumber: situs web ini .
sumber
Karena jawaban yang paling membantu tidak membahas bagian jika ada , saya pikir saya akan mengambil satu melalui solusi cepat dan kotor. Itu bergantung pada PowerShell berada di variabel lingkungan jalur yang mungkin apa yang Anda inginkan. (Hat tip ke jawaban atas karena saya tidak tahu itu.) Tempel ini ke file teks dan beri nama
atau serupa.
sumber
Saya perlu memeriksa versi PowerShell dan kemudian menjalankan kode yang sesuai. Beberapa server kami menjalankan v5, dan yang lainnya v4. Ini berarti bahwa beberapa fungsi, seperti kompres, mungkin atau mungkin tidak tersedia.
Ini solusi saya:
sumber
Cmdlet di bawah ini akan mengembalikan versi PowerShell.
sumber
$PSVersionTable
adalah variabel otomatis; Sebuah Objek. Ini bukan cmdlet.Ini adalah hasil pencarian teratas untuk "File batch dapatkan versi PowerShell", jadi saya ingin memberikan contoh dasar tentang bagaimana melakukan aliran bersyarat dalam file batch tergantung pada versi PowerShell
Contoh umum
Contoh dunia nyata
sumber
Anda juga dapat memanggil perintah "host" dari baris perintah PowerShell. Itu harus memberi Anda nilai
$host
variabel.sumber
host
memutuskan untukGet-Host
. Apapun, itu bukan cara yang dapat diandalkan untuk mendapatkan versi.Memperluas jawaban dengan operator terpilih:
sumber
Get-Host
).