Πώς μπορώ να προσδιορίσω ποια έκδοση της PowerShell είναι εγκατεστημένη σε έναν υπολογιστή, και αν είναι εγκατεστημένη καθόλου;
Χρησιμοποιήστε το $PSVersionTable.PSVersion
για να προσδιορίσετε την έκδοση της μηχανής. Εάν η μεταβλητή δεν υπάρχει, είναι ασφαλές να υποθέσετε ότι η μηχανή έχει την έκδοση 1.0
.
Σημειώστε ότι οι $Host.Version
και (Get-Host).Version
δεν είναι αξιόπιστες - αντικατοπτρίζουν
την έκδοση του κεντρικού υπολογιστή μόνο, όχι της μηχανής. PowerGUI,
PowerShellPLUS, κ.λπ. είναι όλες εφαρμογές φιλοξενίας και
θα ορίσουν την έκδοση του κεντρικού υπολογιστή ώστε να αντικατοπτρίζει το προϊόν τους.
η οποία είναι απολύτως σωστή, αλλά δεν είναι αυτό που ψάχνετε.
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
Για να διαπιστώσετε αν το PowerShell είναι εγκατεστημένο, μπορείτε να ελέγξετε το μητρώο για την ύπαρξη της εντολής
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
και
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
και, αν υπάρχει, αν η τιμή είναι 1 (για εγκατεστημένο), όπως περιγράφεται λεπτομερώς στην ανάρτηση ιστολογίου Έλεγχος εγκατάστασης και έκδοσης του PowerShell.
Για να προσδιορίσετε την έκδοση του PowerShell που είναι εγκατεστημένο, μπορείτε να ελέγξετε τα κλειδιά μητρώου
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
και
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
Για να προσδιορίσετε την έκδοση της PowerShell που είναι εγκατεστημένη από ένα σενάριο .ps1, μπορείτε να χρησιμοποιήσετε την ακόλουθη μονοσήμαντη εντολή, όπως περιγράφεται λεπτομερώς στο PowerShell.com στην ενότητα Which PowerShell Version Am I Running.
$isV2 = test-path variable:\psversiontable
Ο ίδιος ιστότοπος δίνει επίσης μια συνάρτηση για την επιστροφή της έκδοσης:
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
Για να ελέγξετε αν το PowerShell είναι εγκατεστημένο, χρησιμοποιήστε:
HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
Για να ελέγξετε αν είναι εγκατεστημένο το RC2 ή το RTM χρησιμοποιήστε:
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM
Πηγή: (http://www.myitforum.com/articles/40/view.asp?id=10618).