Článek přečtěte do 11 min.

Možná budete chtít znát verzi PowerShellu nainstalovanou na vašem počítači. I když začínající uživatelé mohou přejít na Programy v Ovládacích panelech a zkontrolovat verzi PowerShellu, často je docela zklamáním, když tam nenajdou PowerShell uvedený jako program. Místo toho se budete muset uchýlit k jiným metodám k nalezení verze PowerShellu.

Tento článek poskytuje komplexního průvodce kontrolou verze PowerShellu, kterou používáte.

Úvod do verzí prostředí PowerShell

PowerShell se vyvinul z nástroje pro správu Windows na všestranný shell, který lze používat na různých platformách. Konkrétně PowerShell Core 6.xa PowerShell 7.x z něj udělaly výkonný, multiplatformní automatizační a skriptovací rámec.

PowerShell Versions Evolution od 1.0 do 7.x

V roce 2006 společnost Microsoft spustila PowerShell 1.0 jako součást .NET frameworku pro operační systém Windows, včetně Windows XP (SP2), Windows Server 2003 (r2 SP1) a Windows Vista. Zavedl rutiny jako Get-Process a Get-Service a byl navržen pro automatizaci úloh v prostředích Windows.

Verze Popis
PowerShell 2.0 PowerShell 2.0 přišel v roce 2009. Mimo jiné představil vzdálenou komunikaci (prostřednictvím WinRM) pro spouštění příkazů na vzdálených počítačích a aplikaci Integrated Scripting Environment (ISE).
PowerShell 3.0 PowerShell 3.0, vydaný v roce 2012, zavedl pracovní postupy, nové rutiny a plánované úlohy pro automatizaci úloh.
PowerShell 4.0 PowerShell 4.0 (2013), 5.0 (2016) a 5.1 (2016) měl vylepšení v rutinách, výkonu a DSC. Do skriptovacího jazyka byly přidány třídy a výčty. S PowerShell 5.1 došlo k posunu směrem k open-source a PowerShell Core.
PowerShell Core 6.x Poté bylo PowerShell Core 6.x (2018) open-source a přesunuto na GitHub. Byl multiplatformní, běžel na Windows, MacOS a Linux. Nejen to, ale byl také postaven pro heterogenní prostředí a hybridní cloud.
PowerShell 7.x PowerShell 7.x (2020) je nejnovější verze. Sjednocuje Windows PowerShell a PowerShell Core do jediného proudu verzí, podporuje paralelizaci potrubí a mimo jiné zlepšuje zpracování chyb.

Proč identifikovat správnou verzi PowerShellu

Než použijete PowerShell pro své každodenní úkoly, můžete si položit jednu otázku, jakou verzi PowerShellu mám? Znát odpověď na tuto otázku je důležité, protože vaše verze PowerShellu určuje, jaké rutiny a funkce můžete použít. Z tohoto a mnoha dalších důvodů musíte určit, kterou verzi PowerShellu potřebujete ke správě svých úloh.

  • Kompatibilita: Některé skripty nebo moduly vyžadují specifické rutiny nebo funkce, které jsou dostupné pouze v nejnovější verzi PowerShellu. Moderní verze PowerShellu podporují starší skripty, ale s upozorněním na ukončení podpory pro zastaralé funkce.
  • Přesnost ve výsledcích: Některé verze PowerShellu nemusí poskytovat přesné výsledky, které hledáte, například když musíte splnit konkrétní požadavek nebo předpoklad ke spuštění příkazu nebo načtení modulu.
  • Podpora napříč platformami: Pro Linux nebo macOS potřebujete PowerShell Core nebo PowerShell 7.x.
  • Pokročilé funkce: Starší verze nepodporují nejnovější funkce, jako je paralelismus potrubí, ?? (null coalescing operator) a ForEach-Object -Parallel, které jsou dostupné v PowerShell 7.x.
  • Integrace cloudu a DevOps: Nejnovější verze PowerShellu poskytují vylepšené možnosti integrace s cloudovými platformami, jako je Azure, AWS), nástroji DevOps a kanály CI/CD, což usnadňuje cloudovou správu.
  • Bezpečnostní požadavky: Nejnovější verze prostředí PowerShell jsou doporučeny z důvodu zabezpečení a souladu.
  • Nastavení prostředí: Chcete-li používat nástroje nebo automatizace napříč prostředím, znalost verze pomáhá zajistit kompatibilitu mezi systémy.

Rozdíly mezi Windows PowerShell a PowerShell Core

Klíčové rozdíly mezi Windows PowerShell a PowerShell Core jsou:

Funkce Windows PowerShell PowerShell Core
Platforma Pouze Windows Víceplatformní (Windows, MacOS, Linux)
Verze Poslední hlavní verze: 5.1 Probíhající vydání (7.xa novější)
Rámec Založeno na .NET Framework Založeno na .NET Core (nyní .NET)
Model vydání Pouze opravy chyb/zabezpečení Aktivní vývoj s novými funkcemi
Instalace Je předinstalovaný s OS Windows Musí se stáhnout samostatně z GitHubu nebo správců balíčků
Zpětná kompatibilita Úzká integrace s Windows (např. WMI, COM) Může mít omezené funkce specifické pro Windows
Výkon Rychlejší v některých scénářích nativního systému Windows Lepší výkon na více platformách
Kompatibilita modulu Podporuje mnoho starších modulů Některé starší moduly nemusí být kompatibilní
Podpora cloudu/kontejnerů Omezená podpora pro kontejnery a cloudová prostředí Lepší podpora pro kontejnery a cloud
Open Source Proprietární Open source (licence MIT)

Pokud používáte starší funkce nebo moduly specifické pro Windows, je Windows PowerShell lepší volbou. Ale pro vývoj napříč platformami a cloudové pracovní postupy nejlépe poslouží PowerShell Core.

Jak zkontrolovat verzi PowerShellu

Znalost nainstalované verze PowerShellu je důležitá z několika praktických důvodů, protože vaše verze určuje, jaké rutiny a funkce jsou k dispozici k použití. Různé verze mohou nabízet různou podporu pro různé skripty, moduly a platformy. Pro hladké operace PowerShellu musíte znát verzi PowerShellu, kterou používáte, její omezení a základní funkce.

Jak zkontrolovat verzi PowerShellu je jednoduchý úkol. Nejjednodušší způsob, jak zkontrolovat verzi PowerShellu, je prostřednictvím samotného PowerShellu. Verzi prostředí PowerShell, kterou používáte, můžete zobrazit například prostřednictvím rutiny PSVersionTable.PSVersion nebo Get-Host.

Příkaz verze PowerShellu: $PSVersionTable.PSVersion

Toto je nejspolehlivější způsob, jak získat verzi PowerShell, protože vrací informace konkrétně o verzi modulu PowerShell.

$PSVersionTable.PSVersion
vyberte verzi prostředí PowerShell

Tato rutina zobrazuje hlavní, vedlejší a verzi sestavení (opravy) nainstalovaného prostředí PowerShell. V případě potřeby se zobrazí číslo revize.

Pokud chcete zobrazit více podrobností než jen verzi, vyzkoušejte následující rutinu:

$PSVersionTable
vyberte verzi prostředí PowerShell

$PSVersionTable kromě verze zobrazuje několik vlastností specifických pro prostředí.

  • PSVersion – Zobrazuje verzi prostředí PowerShell
  • PSEdition – Zobrazuje, zda jde o Desktop (Windows PowerShell) nebo Core (PowerShell Core / PowerShell 7+)
  • WSManStackVersion – Zobrazuje verzi WS-Management (používá se pro vzdálenou komunikaci)
  • PSRemotingProtocolVersion – Verze vzdáleného protokolu
  • SerializationVersion – Slouží k zachování kompatibility se staršími verzemi pro vzdálené relace

Jak získat verzi PowerShell pomocí příkazu Get-Host

Hostitel je program, který je hostitelem modulu PowerShell. A můžete mít hostitele s verzí, která je nezávislá na PowerShellu.

Následující rutina zobrazuje verzi PowerShellu, kterou používáte, ale tato verze může být nepřesná, protože odráží verzi hostitele, nikoli verzi motoru.

Get-Host
vyberte verzi prostředí PowerShell

Verze PowerShellu se často shoduje s verzí hostitele. Kromě verze hostitele tato rutina také zobrazuje název hostitele, aktuální kulturu a kulturu uživatelského rozhraní.

Příkaz Get-Host nefunguje vzdáleně a vždy vrací verzi 1.0.0.0.

Příkazy $Host a $Host.Version

$host je automatická proměnná, která zobrazuje stejné informace jako rutina Get-Host.

$host
vyberte verzi prostředí PowerShell

Pokud hledáte verzi PowerShell, $host se nedoporučuje ze stejných důvodů jako Get-Host. Totéž platí pro $host.Version.

$host.Version
vyberte verzi prostředí PowerShell

Zobrazuje verzi hostitelské aplikace, která spouští aktuální relaci PowerShellu, i když v jiném formátu.

Editor registru

Verzi prostředí PowerShell můžete zkontrolovat pomocí Editoru registru některým z následujících způsobů:

  • Použijte rutinu Get-ItemProperty k dotazu v registru na nainstalovanou verzi prostředí PowerShell.
  • Přejděte do Editoru registru a ručně vyhledejte cesty pro podrobnosti o verzi PowerShellu.

Prostřednictvím rutin

Pro PowerShell verze 5

Klíč registru PowerShellVersion můžete zobrazit pomocí rutiny „Get-ItemProperty“. Je to jako:

(Get-ItemProperty -Path HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine -Name 'PowerShellVersion').PowerShellVersion

Pro PowerShell verze 7

Pokud máte nainstalovaný PowerShell 7 nebo novější, použijte následující rutinu:

Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\PowerShellCore' | Select-Object -Property PSVersion

Manuální metoda

Konfiguraci prostředí PowerShell a informace o verzi můžete získat v Editoru registru.

Pro PowerShell verze 5

V editoru registru rozbalte Počítač > HKEY-LOCAL-MACHINE > SOFTWARE > Microsoft > PowerShell >3 > PowerShellEngine. V sousedním podokně najdete informace včetně čísla verze PowerShellu.

Pro PowerShell verze 7

Pokud máte nainstalovaný PowerShell 7, přejděte v Editoru registru na následující cestu a zkontrolujte verzi:

Počítač > HKEY_LOCAL_MACHINE > SOFTWARE > Microsoft > PowerShellCore > InstalledVersions > 31ab5147-9a97-4452-8443-d9709f0516e1

Pokročilé techniky pro identifikaci verze

Najděte verzi PowerShell na vzdálených systémech

Předpoklady

Než budete moci zkontrolovat verzi PowerShellu na vzdáleném počítači, musí být splněny následující předpoklady.

  • Windows Management Framework (WMF) je nainstalován a povolen na vzdáleném počítači.
  • WinRM (Windows Remote Management) je nakonfigurován a spuštěn na místním i vzdáleném počítači.
    Spusťte ‚winrm quickconfig‘ a ​​připravte počítač na vzdálený přístup přes PowerShell.
  • Na vzdáleném počítači máte požadovaná oprávnění.

Zkontrolujte verzi PowerShellu na vzdáleném počítači

Pomocí rutiny Invoke-Command s $PSVersionTable zkontrolujte verzi prostředí PowerShell nainstalovanou na vzdáleném počítači.

Invoke-Command `

  -Název počítače WS16-DC1 `

  -ScriptBlock { $PSVersionTable.PSVersion } `

  -Pověření $cred

Poznámka:

  1. V tomto příkazu nahraďte ComputerName (WS16-DC1) svým konkrétním názvem počítače a přihlašovací údaje pod $cred platným uživatelským jménem a heslem.
  2. Pomocí čárek k oddělení hodnot můžete efektivně obsluhovat několik vzdálených počítačů najednou.

Ve výše uvedené rutině:

  • Invoke-Command se používá ke spouštění příkazů na vzdáleném počítači.
  • ComputerName WS16-DC1 určuje název vzdáleného počítače (v tomto případě WS16-DC1).
  • ScriptBlock {$PSVersionTable.PSVersion} je blok skriptu, který se spouští na vzdáleném počítači za účelem načtení informací o verzi prostředí PowerShell.
  • Credential $cred určuje přihlašovací údaje k ověření na vzdáleném počítači, kde $cred je objekt, který obsahuje platné přihlašovací údaje (jako je uživatelské jméno a heslo).

Porovnání verzí prostředí PowerShell mezi operačními systémy Windows

V této tabulce jsou uvedeny verze prostředí PowerShell předinstalované v různých operačních systémech Windows:

Verze PowerShell Datum vydání Operační systém Windows je ve výchozím nastavení podporován
PowerShell 1.0 listopadu 2006 Windows Server 2003 SP1
Windows XP SP2
Windows Vista
PowerShell 2.0 října 2009 Windows Server 2008 R2
Windows 7
PowerShell 3.0 září 2012 Windows Server 2012
Windows 8
PowerShell 4.0 října 2013 Windows Server 2012 R2
Windows 8.1
PowerShell 5.0 února 2016 Windows Server 2016
Windows 10
PowerShell 5.1 srpna 2016 Windows Server 2016
Výroční aktualizace Windows 10
PowerShell Core 6.0 ledna 2018 Windows Server 2012 R2
Windows Server 2012
Windows Server 2016
Windows 10
Windows 8.1
Windows 7 s aktualizací Service Pack 1
Zdroj: https://superops.com/powershell-version

PowerShell 5.1 je poslední verze nainstalovaná ve výchozím nastavení na klientech a serverech Windows. Po něm následovalo PowerShell Core (nyní PowerShell 7), což je samostatný produkt. Není předinstalovaný, ale musí být nainstalován ručně.

Instalace novější verze nenahrazuje výchozí předinstalovanou verzi. Například PowerShell 7.xa Windows PowerShell 5.1 mohou koexistovat.

Aktualizujte nebo nainstalujte novější verze prostředí PowerShell

Chcete-li zůstat v aktuálním stavu Windows PowerShell 5.1 ve Windows 10 a 11, vždy spouštějte aktualizace systému, aby byl váš počítač aktuální.

PowerShell Core (verze 7) je odlišný produkt od Windows PowerShell a je nutné jej nainstalovat ručně některou z následujících metod:

  • Stáhněte a spusťte instalační soubor
  • Spusťte v počítači příkaz z prostředí PowerShell

Doporučuje se ponechat v počítači Windows PowerShell i PowerShell Core, abyste z PowerShellu vytěžili maximum. Pozor, starší skripty nemusí fungovat v novějších verzích a současné skripty nemusí fungovat ve starších verzích.

Můžete si stáhnout a nainstalovat novější verzi PowerShellu kterýmkoli z těchto způsobů

Nainstalujte PowerShell pomocí Microsoft Store

Ve Windows 10 a Windows 11 otevřete Microsoft Store a vyhledejte PowerShell.

Nejnovější verze aplikace PowerShell je ve výsledcích vyhledávání uvedena jako PowerShell (vydává Microsoft Corporation). Kliknutím na něj zobrazíte jeho podrobnosti, kde si jej můžete stáhnout a nainstalovat také kliknutím na tlačítko Získat.

Nainstalujte PowerShell pomocí Winget

Správce balíčků WinGet nainstaluje nejnovější verzi PowerShellu z příkazového řádku.

Vyhledejte PowerShell pomocí Winget

Chcete-li zobrazit seznam balíčků souvisejících s PowerShell, s jejich čísly verzí a ID, použijte následující rutinu:

winget search PowerShell

Nainstalujte PowerShell

Vyhledejte požadovaný balíček PowerShell a nainstalujte jej pomocí jeho ID. ID pro PowerShell je Microsoft.PowerShell.

Chcete-li nainstalovat nejnovější verzi prostředí PowerShell, použijte následující rutinu:

winget nainstalovat Microsoft.PowerShell

Nainstalujte PowerShell pomocí balíčku MSI

Další metodou je stažení PowerShell z GitHubu a použití MSI k instalaci. Navštivte oficiální stránku vydání PowerShell GitHub a vyhledejte nejnovější vydání PowerShellu (jako je PowerShell 7.x). Přejděte dolů do části Aktiva tohoto vydání a stáhněte si balíček MSI.

Stažení balíčku nějakou dobu trvá. Po stažení spusťte instalační program a nainstalujte PowerShell.

Správa více verzí PowerShellu

Na stejném počítači můžete bez konfliktů používat klasický Windows PowerShell (obvykle verze 5.1) a moderní PowerShell Core (verze 6.xa 7.x).

Běžným případem použití pro správu více verzí PowerShellu je situace, kdy různá prostředí nebo skripty vyžadují konkrétní verze.

Zde je návod, jak můžete ve svém systému spravovat více verzí PowerShellu.

Spusťte konkrétní verzi z dialogového okna Spustit nebo z příkazového řádku

Otevřete dialogové okno Spustit a zadejte cestu k exe souboru verze PowerShellu, kterou chcete spustit (viz příklad níže).

Můžete také spustit konkrétní verzi PowerShellu zadáním její cesty v PowerShellu, jak je uvedeno v následujícím příkladu. Všimněte si, že tato metoda je platná pouze pro PowerShell 7, kde můžete přepínat mezi verzemi.

Příklad:

  • PowerShell 5.1
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • PowerShell 7
C:\Program Files\PowerShell\7\pwsh.exe

Profily a konfigurace prostředí PowerShell

Profil PowerShellu je skript PowerShellu, který se spouští při každém spuštění PowerShellu, kromě případů, kdy použijete příznak -NoProfile.

Každá verze PowerShellu má svůj vlastní soubor profilu. Pokud chcete, aby konkrétní nastavení nebo konfigurace byly dostupné v jedné verzi a ne ve druhé, máte možnost nakonfigurovat profil zvlášť pro každou verzi.

Vyhledejte soubor profilu ručně

  • Profil PowerShellu 5.1 může být na adrese: C:\Users\<uživatelské jméno>\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
  • Profil PowerShell 7+ může být na adrese: C:\Users\<uživatelské jméno>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Vyhledejte soubor profilu prostřednictvím PowerShellu

K načtení profilu PowerShellu můžete také použít samotný PowerShell. Jednoduše použijte $Profile k nalezení cesty profilu, protože proměnná $Profile cestu ukládá.

$Profile

Zobrazí se cesta k profilu hostitelské aplikace PowerShell aktuálního uživatele. Proměnnou $Profile můžete pomocí kanálu získat do rutiny Get-Member, abyste získali další cesty.

$Profil | Get-Member -MemberType NoteProperty

Test kompatibility se staršími skripty a moduly

Při upgradu na novější verze nebo integraci staršího kódu je důležité otestovat kompatibilitu se staršími skripty a moduly v PowerShellu.

Následuje několik způsobů, jak otestovat kompatibilitu se staršími skripty a moduly.

Používejte Windows PowerShell a PowerShell Core vedle sebe

Na stejném počítači můžete spustit Windows PowerShell i PowerShell Core. Otestujte svůj skript nebo modul v obou prostředích na kompatibilitu. Pamatujte, že 5.1 je poslední hlavní vydání Windows PowerShell, zatímco verze 7 je aktuální vydání PowerShell Core.

Příkladem je:

./vas_script.ps1

./ označuje, že skript je umístěn v aktuálním adresáři, zatímco your_script.ps1 je skript, který se pokoušíte spustit. .ps1 je výchozí přípona pro soubory skriptů PowerShell.

Zkontrolujte verzi PowerShellu

Je dobré vědět, pro kterou verzi PowerShellu byl váš skript původně napsán a ve které verzi se jej pokoušíte spustit.

Použijte rutinu Test-ModuleManifest

Rutina Test-ModuleManifest se používá k ověření, zda je manifest modulu PowerShell (soubor .psd1) platný a správně nakonfigurovaný. Také zkontroluje, zda soubor neobsahuje závislosti a problémy s kompatibilitou.

Test-ModuleManifest -Cesta "C:\Path\To\YourModule.psd1"

Parametr -Path určuje cestu k souboru .psd1.

Pomocí rutiny Get-Command zkontrolujte dostupnost rutiny

Některé rutiny a parametry mohou být podporovány v jedné verzi PowerShellu a v jiné ne. Pomocí rutiny Get-Command ověřte dostupnost a syntaxi rutin, které používáte. Zde je příklad:

Get-Command -Name Invoke-RestMethod -Modul Microsoft.PowerShell.Utility

PSScriptAnalyzer pro statickou analýzu kódu

PSScriptAnalyzer je nástroj, který kontroluje osvědčené postupy a identifikuje problémy s kompatibilitou. K instalaci a spuštění použijte následující rutinu:

Install-Module-Name PSScriptAnalyzer

Invoke-ScriptAnalyzer -Path "C:\Cesta\To\YourScript.ps1"

Je to dobrý způsob, jak zachytit jakékoli problémy se skripty nebo zastaralými rutinami před spuštěním.

Zkontrolujte kompatibilitu .NET

Windows PowerShell (5.1) je postaven na .NET Framework, zatímco PowerShell Core (6+) a PowerShell 7+ jsou postaveny na .NET Core/.NET. V případě, že váš skript nebo modul spoléhá na .NET sestavení, ujistěte se, že jsou kompatibilní s .NET Core/.NET a .NET Framework.

Sestavení .NET použitá ve vašem skriptu můžete otestovat pomocí následující rutiny:

[System.Reflection.Assembly]::LoadFile("C:\Cesta\To\YourAssembly.dll")

Závěr

Vědět, jakou verzi PowerShellu máte nainstalovanou v počítači, je důležité z několika důvodů. Různé verze přicházejí s novými rutinami, funkcemi a syntaxí, takže znalost verze zajišťuje, že vaše skripty jsou kompatibilní s verzí, ve které je spouštíte. PowerShell Core zavedl kompatibilitu napříč platformami, takže znalost nainstalované verze je klíčem k použití správné funkce a moduly specifické pro platformu.

Ze všech dostupných metod pro určení verze prostředí PowerShell spuštěné na vašem počítači se důrazně doporučuje $PSVersionTable. Je to nejen nejspolehlivější metoda, ale také nejpřesnější pro identifikaci verze. Poskytuje komplexní přehled prostředí PowerShell, který vám pomůže zajistit, že skripty jsou kompatibilní s konkrétní verzí a prostředím.

PowerShell musíte pravidelně aktualizovat, abyste zajistili, že budou nainstalovány důležité opravy zabezpečení, které chrání před chybami zabezpečení nalezenými v dřívějších verzích. Pravidelná aktualizace navíc zajišťuje přístup k nejnovějším funkcím, jako jsou nové rutiny a vylepšení napříč platformami. Zaručuje také lepší výkon, robustní zásady provádění a vylepšenou podporu paralelního a asynchronního spouštění. Stručně řečeno, upgrade na nejnovější verzi PowerShellu pomáhá vytvářet bezpečnější, efektivnější a škálovatelnější řešení automatizace a zároveň snižuje rizika spojená se zastaralými nebo nepodporovanými verzemi.

Časté dotazy

Jak zkontrolovat verzi powershell?

Nejjednodušší způsob, jak zkontrolovat verzi PowerShellu, je prostřednictvím samotného PowerShellu. Verzi prostředí PowerShell, kterou používáte, můžete zobrazit například prostřednictvím rutiny PSVersionTable.PSVersion nebo Get-Host.

Pro další informace nás neváhejte kontaktovat.

Zdroj: Netwrix