Jak mogę ustalić, która wersja PowerShell jest zainstalowana na komputerze, a nawet jeśli w ogóle jest zainstalowana?
powershell
MagicAndi
źródło
źródło
$PSVersionTable
jest bardziej niezawodny i zwraca $ PSVersion. Możesz także użyć$PSVersionTable.PSVersion
. Nawet jeśli jesteś podłączony zdalnie do komputera z inną wersją (invoke-command -computername myRemotePC -Credential foo {$host}
), wygląda na to, że$host
pokaże tylko najniższą wersję, którą uzgodnili do serializacji. Chociaż$PSVersionTable
pokaże prawdziwą wersję. Mam nadzieję, że to pomoże komuś ..notepad $profile
i wrzuciłemfunction psver { $PSVersionTable; $PSVersionTable.PSVersion }
to. Załaduj ponownie. $profile
i mogę po prostu wpisać wpsver
dowolnym momencie, aby uzyskać szczegółowe informacje o wersji i inne szczegóły.Chciałbym użyć Get-Host lub $ PSVersionTable . Jak zauważa Andy Schneider,
$PSVersionTable
nie działa w wersji 1; został wprowadzony w wersji 2.źródło
$host.version
nie jest niezawodny - na przykład w powergui zwraca wersję hosta powergui, która nie jest taka sama jak wersja silnika PowerShell (co jest pożądane.)Możesz zajrzeć na wbudowanej zmiennej
$psversiontable
. Jeśli nie istnieje, masz V1. Jeśli tak, to zapewni ci wszystkie potrzebne informacje.źródło
Aby ustalić, czy PowerShell jest zainstalowany, możesz sprawdzić rejestr pod kątem istnienia
i
i jeśli istnieje, czy wartość wynosi 1 (dla zainstalowanego), jak wyszczególniono w poście na blogu Sprawdź, czy PowerShell jest zainstalowany i wersji .
Aby ustalić wersję zainstalowanego programu PowerShell, możesz sprawdzić klucze rejestru
i
Aby ustalić wersję programu PowerShell, która jest instalowana ze skryptu .ps1, możesz użyć następującego jednowierszowego programu, jak opisano szczegółowo na stronie PowerShell.com, w której wersji programu PowerShell działam .
Ta sama witryna udostępnia również funkcję zwracania wersji:
źródło
Możesz bezpośrednio sprawdzić wersję za pomocą tylko jednego wiersza, wywołując PowerShell zewnętrznie , na przykład z wiersza polecenia
Według @psaul ty może faktycznie mieć jedno polecenie, które jest agnostykiem skąd przyszedł (CMD, PowerShell lub Pwsh). Dziękuję za to.
Testowałem i działał bezbłędnie zarówno na CMD, jak i PowerShell.
źródło
cmd
ipowershell
bezskutecznie. Oczekiwałbym również tego samego zachowania. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
działa świetnie.Możesz sprawdzić, czy wersja programu Windows PowerShell została zainstalowana, wykonując następujące sprawdzenie:
W konsoli Windows PowerShell wpisz następujące polecenie w wierszu polecenia, a następnie naciśnij klawisz ENTER:
Zobaczysz wynik, który wygląda następująco:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
źródło
Zalecaną przez Microsoft kompatybilną metodą przesyłania dalej metodą sprawdzania, czy PowerShell jest zainstalowany i określania zainstalowanej wersji, jest sprawdzenie dwóch określonych kluczy rejestru. Powtórzyłem tutaj szczegóły na wypadek, gdyby link się zepsuł.
Według połączonej strony:
Aby sprawdzić, czy jest zainstalowana dowolna wersja programu PowerShell, sprawdź w rejestrze następującą wartość:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Aby sprawdzić, czy zainstalowana jest wersja 1.0 lub 2.0 programu PowerShell, sprawdź w rejestrze następującą wartość:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
źródło
Znalazłem najprostszy sposób, aby sprawdzić, czy zainstalowano:
cmd
, a następnie OK)powershell
a następnie naciśnij klawisz Return. Powinieneś otrzymaćPS
monit PowerShell :Następnie możesz sprawdzić wersję z wiersza polecenia programu PowerShell, wpisując
$PSVersionTable.PSVersion
:Wpisz,
exit
jeśli chcesz wrócić do wiersza polecenia (exit
ponownie, jeśli chcesz również zamknąć wiersz polecenia).Aby uruchomić skrypty, zobacz http://ss64.com/ps/syntax-run.html .
źródło
$host.version
jest po prostu źle / niewiarygodne. Daje to wersję pliku wykonywalnego hosta (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe itp.), A nie wersję samego silnika.Wersja silnika jest zawarta w
$psversiontable.psversion
. W przypadku PowerShell 1.0 ta zmienna nie istnieje, więc oczywiście jeśli ta zmienna nie jest dostępna, można całkowicie założyć, że silnik to 1.0, oczywiście.źródło
Posługiwać się:
Możesz pobrać szczegółowy skrypt z Jak ustalić zainstalowaną wersję PowerShell .
źródło
Najłatwiejszym sposobem, aby zapomnieć o tej stronie i nigdy do niej nie wrócić, jest nauczenie się
Get-Variable
:Nie ma potrzeby zapamiętywania każdej zmiennej. Wystarczy tylko
Get-Variable
(i „W wersji powinno być coś”).źródło
$PSVersionTable
Aby sprawdzić, czy PowerShell jest zainstalowany, użyj:
Aby sprawdzić, czy zainstalowano RC2 lub RTM, użyj:
Źródło: ta strona internetowa .
źródło
Ponieważ najbardziej pomocna odpowiedź nie dotyczyła części „ jeśli istnieje” , pomyślałem, że dam jej jedno szybkie i brudne rozwiązanie. Polega na tym, że PowerShell znajduje się w zmiennej środowiskowej ścieżki, co prawdopodobnie jest tym, czego chcesz. (Porada na najwyższą odpowiedź, ponieważ tego nie wiedziałem.) Wklej to do pliku tekstowego i nazwij go
lub podobne.
źródło
Musiałem sprawdzić wersję programu PowerShell, a następnie uruchomić odpowiedni kod. Niektóre z naszych serwerów działają w wersji 5, a inne w wersji 4. Oznacza to, że niektóre funkcje, takie jak kompresja, mogą być niedostępne.
To jest moje rozwiązanie:
źródło
Poniższe polecenie cmdlet zwróci wersję programu PowerShell.
źródło
$PSVersionTable
jest zmienną automatyczną; obiekt. To nie jest polecenie cmdlet.To jest najlepszy wynik wyszukiwania dla „Plik wsadowy pobierz wersję PowerShell”, dlatego chciałbym podać podstawowy przykład wykonywania warunkowego przepływu w pliku wsadowym w zależności od wersji PowerShell
Ogólny przykład
Przykład z prawdziwego świata
źródło
Możesz także wywołać polecenie „host” z wiersza polecenia programu PowerShell. Powinno to dać ci wartość
$host
zmiennej.źródło
host
rozwiązuje doGet-Host
. Niezależnie od tego nie jest to niezawodny sposób na uzyskanie wersji.Rozszerzanie odpowiedzi za pomocą operatora select:
źródło
Get-Host
).