Adam the Automator (Polski)

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:

  1. (Get-Host).Version właściwość
  2. $host.Version właściwość
  3. rejestr (tylko Windows PowerShell)
  4. $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.,

odwoływanie się$host.Version

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

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

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *