Adam the Automator (Čeština)

V PowerShellu existuje spousta způsobů, jak dělat to samé (nebo se tomu blížit). V tomto příspěvku na blogu se všude naučíte kontrolovat verzi prostředí PowerShell, kterou máte v místních a vzdálených počítačích. Pokryjeme špatné způsoby a můj doporučený způsob.

Pokud byste chtěli přejít od nováčků PowerShellu k PowerShellovi guru, doporučuji to zhltnout ZDARMA minikurz o budování nástroje PowerShell. Toto je podrobný návod s úplným vysvětlením a pokyny od Adama Automatora!

Existují weby, které ukazují různé způsoby, jak zkontrolovat verzi Powershellu. Ale nikdo, kdo sestavil úplný seznam všech. Rozhodl jsem se to změnit.

Všechny tyto způsoby by měly fungovat v prostředí Windows PowerShell i PowerShell Core. Tyto metody by měly fungovat i v prostředí Windows PowerShell verze 1.0 až po PowerShell 7.

Způsoby, jak zjistit verzi PowerShellu, kterou používáte, jsou:

  1. Vlastnost (Get-Host).Version
  2. Vlastnost $host.Version
  3. Registr (pouze Windows PowerShell)
  4. Vlastnost $PSVersionTable.PSVersion

Rozdělme si všechny způsoby, jak najít verzi PowerShellu od nejméně doporučeného způsobu .

Obsah

Získat hostitele

PowerShell má koncept známý jako hostitelé. Hostitel je program, který je hostitelem modulu PowerShell. Nejedná se o samotný motor PowerShellu. Konzola PowerShellu nebo editor kódu s integrovaným terminálem jsou hostiteli prostředí PowerShell.

Hostitel může mít verzi, která je zcela nezávislá na samotném prostředí PowerShell. To může klamat mnoho nováčků. Ukážu vám proč.

Pokud spustíte (Get-Host).Version, uvidíte, že vrací číslo verze, které vypadá, jako by to mohla být verze enginu PowerShell. Vzhled může klamat.

Níže jsem spustil Get-Host na Windows PowerShell 5.1 a můžete vidět, že se vrací s 5.1.17134.858. Vypadá to jako legitimní verze.

Někdy však při spuštění Get-Host v integrovaném terminálu verze není stejná. I když obvykle hostitel bude představovat stejnou verzi enginu, není nutné to vždy dělat.

Zkontrolujte verzi Powershellu pomocí funkce Get-Host na vzdálených počítačích

I když Get-Host Zdá se, že při spuštění na místním počítači vrátí stejnou verzi, na vzdálených to nikdy nebude.

Například spustíme Get-Host na vzdáleném serveru Windows Server 2016 pomocí Invoke-Command a uvidíte, co se stane.

Když jsem to naposledy zkontroloval, není možné spustit PowerShell v1 Windows Server 2016.

Spoléhání se na Get-Host je prostě všude špatný nápad.

Zkontrolujte příkaz Powershell verze $ host.Version

Odkazy $host.Version jsou dalším způsobem, jak zkontrolovat verzi Powershellu. Proměnná $host je automatická proměnná, která vrací stejný výstup jako Get-Host.

Odkazování na $host.Version

Na této metodě není nic zvláštního. Je to prostě to samé jako běh Get-Host.

$ host.Version na vzdálených počítačích

Stejné chování uvidíte i přes PowerShell Remoting s $host.Version při spuštění Get-Host.

Nebezpečí, Will Robinsone!

Registr

Pokud nechcete otevřít samotný PowerShell, můžete také zkontrolovat registr. Verze prostředí PowerShell je zastrčena pod hodnotou v cestě klíče registru HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine. Tento klíč registru má hodnotu nazvanou PowerShellVersion, na kterou můžete odkazovat pomocí Get-ItemProperty.

Vidíte, že toto verze je podobná, ale neobsahuje revizi jako ostatní možnosti.

Použití dalších nástrojů

Použití registru také znamená, že k vyhledání nemusíte vůbec používat PowerShell verze. Příkazy můžete spustit z příkazového řádku nebo jiného nástroje, který dokáže číst registr.

Registr na vzdálených počítačích

Registr je statický a hodnoty se nezmění lokálně ani vzdáleně. Můžete si být jisti, že to, co vidíte místně, bude stejné jako to, co vidíte na dálku.

Místní a vzdálené zobrazení stejné verze je dobré. Ale mám lepší způsob, jak vám to ukázat pomocí $PSVersionTable automatické proměnné.

Zkontrolujte verzi Powershellu pomocí příkazu $ PSVersionTable.PSVersion

Poslední a poslední metoda odkazuje na vlastnost PSVersion v automatické proměnné $PSVersionTable.Tato metoda bude vždy představovat stroj PowerShell.

Automatická proměnná $PSVersionTable je hašovací tabulka jen pro čtení. který vrací informace konkrétně o verzi prostředí PowerShell. Tato automatická proměnná vrací nejen verzi, ale také PSEdition. Tato vlastnost může poskytovat Core nebo Desktop a poskytovat další informace o spuštěné edici prostředí PowerShell.

$ PSVersionTable výstup

$ PSVersionTable na vzdálených počítačích

Použití $PSVersionTable automatická proměnná je přesná místně i vzdáleně. Níže vidíte, že zabalením $PSVersionTable.PSVersion do bloku script a spuštěním tohoto kódu na vzdáleném počítači vrátí stejnou verzi.

Shrnutí

V tomto příspěvku na blogu jste se naučili všechny způsoby, jak lokálně i vzdáleně zkontrolovat verzi prostředí PowerShell. Doufám, že prvních několik metod vám dalo představu o tom, jak způsoby nekontrolovat verzi!

Doporučuji vždy používat $PSVersionTable.PSVersion. Všechny ostatní metody mohou vypadat podobně jako verze enginu PowerShell, ale nemusí vždy odrážet verzi enginu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *