w PowerShell istnieje milion sposobów na zrobienie tego samego (lub blisko niego). W tym poście na blogu dowiesz się, jak sprawdzić wersję PowerShell, którą masz na komputerach lokalnych i zdalnych. Omówimy złe sposoby i mój zalecany sposób.
Jeśli chcesz przejść od nowicjusza PowerShell do Guru PowerShell, polecam pożerać ten darmowy Mini-kurs na temat budowania narzędzia PowerShell. Jest to samouczek krok po kroku z pełnymi wyjaśnieniami i wskazówkami od Automatora Adama!,
istnieją strony internetowe, które pokazują różne sposoby sprawdzania wersji Powershell. Ale żaden z nich nie sporządził wyczerpującej listy wszystkich. Postanowiłem to zmienić.
wszystkie te sposoby powinny działać zarówno w Windows PowerShell, jak i PowerShell Core. Metody te powinny również działać w Windows PowerShell w wersji 1.0 aż do PowerShell 7.,
można znaleźć używaną wersję programu PowerShell:
-
(Get-Host).Version
właściwość -
$host.Version
właściwość - rejestr (tylko Windows PowerShell)
-
$PSVersionTable.PSVersion
właściwość
omówmy wszystkie sposoby znalezienia wersji PowerShell od najmniej do najbardziej zalecanych.
spis treści
Get-Host
PowerShell ma koncepcję znaną jako hosty. Host to program, który hostuje Silnik PowerShell., To nie jest sam silnik PowerShell.Konsola PowerShell lub edytor kodu ze zintegrowanym terminalem to hosty PowerShell.
host może mieć wersję całkowicie niezależną od samego PowerShell. Może to być mylące dla wielu nowo przybyłych. Pokażę Ci dlaczego.
jeśli uruchomisz (Get-Host).Version
, zobaczysz, że zwraca on Numer wersji, który wygląda tak, jakby mógł być wersją silnika PowerShell. Wygląd może być mylący.
poniżej uruchomiłemGet-Host
na Windows PowerShell 5.1 i widać, że wraca z 5.1.17134.858., To wygląda na legalną wersję.
jednak czasami, gdy uruchomisz Get-Host
w zintegrowanym terminalu, wersja nie jest taka sama. Chociaż zazwyczaj host będzie reprezentował tę samą wersję silnika, nie zawsze jest to konieczne.
Sprawdź wersję programu Powershell za pomocą funkcji Get-Host na komputerach zdalnych
mimo żeGet-Host
wydaje się zwracać tę samą wersję po uruchomieniu na komputerze lokalnym, nigdy nie będzie na komputerach zdalnych.,
na przykład uruchomGet-Host
na zdalnym serwerze Windows Server 2016 za pomocą Invoke-Command
I Zobacz, co się stanie.
Ostatnio sprawdzałem, że nie można uruchomić PowerShell v1 Na Windows Server 2016.
opieranie się naGet-Host
jest po prostu złym pomysłem.
Sprawdź wersję Powershell $host.Polecenie Version
odwołanie$host.Version
jest innym sposobem sprawdzenia wersji Powershell. Zmienna $host
jest zmienną automatyczną, która zwraca to samo wyjście co Get-Host
.,
nie ma nic specjalnego w tej metodzie. Jest to po prostu to samo, co uruchamianie Get-Host
.
$ host.Wersja na komputerach zdalnych
zobaczysz to samo zachowanie poprzez Remotowanie PowerShell z $host.Version
jak uruchomisz Get-Host
.
Danger, Will Robinson!
rejestr
Jeśli nie chcesz otwierać samego PowerShell ' a, możesz również sprawdzić rejestr., Wersja programu PowerShell jest schowana pod wartością w ścieżce klucza rejestru HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
. Ten klucz rejestru ma wartość o nazwie PowerShellVersion
, do której można się odwołać, używając Get-ItemProperty
.
widać, że ta wersja jest podobna, ale nie zawiera wersji, jak inne opcje.
Korzystanie z innych narzędzi
Korzystanie z rejestru oznacza również, że nie musisz używać PowerShell w ogóle, aby znaleźć wersję. Polecenia można uruchamiać z wiersza polecenia lub innego narzędzia, które może odczytać rejestr.,
rejestr na komputerach zdalnych
rejestr jest statyczny i wartości nie zmieniają się lokalnie ani zdalnie. Możesz mieć pewność, że to, co widzisz lokalnie, będzie takie samo, jak widzisz zdalnie.
Pokazywanie tej samej wersji lokalnie i zdalnie jest dobre. Ale mam lepszy sposób, aby pokazać ci za pomocą zmiennej automatycznej$PSVersionTable
.
Sprawdź wersję Powershell poprzez $PSVersionTable.Polecenie PSVersion
ostatnia i ostatnia metoda odwołuje się do właściwości PSVersion
na zmiennej automatycznej $PSVersionTable
., Ta metoda zawsze będzie reprezentować silnik PowerShell.
zmienna automatyczna$PSVersionTable
jest tabelą skrótów tylko do odczytu, która zwraca informacje dotyczące wersji silnika PowerShell. Ta automatyczna zmienna nie tylko zwraca wersję, ale także PSEdition
. Ta właściwość może być Core lub Desktop, aby dostarczyć więcej informacji na temat uruchomionej edycji PowerShell.,
$PSVersionTable on Remote Computers
Using the $PSVersionTable
automatyczna zmienna jest dokładna lokalnie, ponieważ jest zdalna. Poniżej widać, że zawijając $PSVersionTable.PSVersion
w blok skryptowy i wykonując ten kod na zdalnym komputerze, zwróci on tę samą wersję.
podsumowanie
w tym poście na blogu nauczyłeś się wszystkich sposobów sprawdzania wersji PowerShell zarówno lokalnie, jak i zdalnie., Mam nadzieję, że kilka pierwszych metod dało wam pomysł na to, w jaki sposób nie sprawdzać wersji!
polecam zawsze używać$PSVersionTable.PSVersion
. Wszystkie inne metody mogą wyglądać podobnie do wersji silnika PowerShell, ale nie zawsze mogą odzwierciedlać wersję silnika.