Migrace z Windows PowerShellu 5.1 do PowerShellu 7

PowerShell 7 je navržený pro cloudová, místní a hybridní prostředí a obsahuje vylepšení a nové funkce.

  • Instalace a spuštění souběžně s Windows PowerShellem
  • Vylepšená kompatibilita s existujícími moduly Windows PowerShellu
  • Nové jazykové funkce, jako jsou ternární operátory a ForEach-Object -Parallel
  • Zlepšení výkonu
  • Vzdálené komunikace založené na SSH
  • Interoperabilita mezi platformami
  • Podpora kontejnerů Dockeru

PowerShell 7 funguje souběžně s Windows PowerShellem a umožňuje snadno testovat a porovnávat mezi edicemi před nasazením. Migrace je jednoduchá, rychlá a bezpečná.

PowerShell 7 je podporovaný v následujících operačních systémech Windows:

  • Windows 10 a 11
  • Windows Server 2016, 2019 a 2022

PowerShell 7 běží také v macOS a několika distribucích Linuxu. Seznam podporovaných operačních systémů a informací o životním cyklu podpory najdete v tématu Životní cyklus podpory PowerShellu.

Instalace PowerShellu 7

Pro flexibilitu a podporu potřeb IT, techniků DevOps a vývojářů je k dispozici několik možností instalace PowerShellu 7. Ve většině případů je možné možnosti instalace omezit na následující metody:

Poznámka:

Balíček MSI je možné nasadit a aktualizovat pomocí produktů pro správu, jako je Microsoft Configuration Manager. Stáhněte balíčky ze stránky verze GitHubu.

Nasazení balíčku MSI vyžaduje oprávnění Správa istrator. Balíček ZIP může nasadit libovolný uživatel. Balíček ZIP je nejjednodušší způsob, jak nainstalovat PowerShell 7 pro testování před potvrzením úplné instalace.

PowerShell 7 můžete nainstalovat také přes Windows Store nebo winget. Další informace o obou těchto metodách najdete v podrobných pokynech k instalaci PowerShellu ve Windows.

Použití PowerShellu 7 vedle sebe s Windows PowerShellem 5.1

PowerShell 7 je navržený tak, aby spoluexistovat s Windows PowerShellem 5.1. Následující funkce zajišťují, že vaše investice do PowerShellu je chráněná a migrace na PowerShell 7 je jednoduchá.

  • Samostatná instalační cesta a název spustitelného souboru
  • Samostatná cesta PSModulePath
  • Samostatné profily pro každou verzi
  • Vylepšená kompatibilita modulů
  • Nové koncové body vzdálené komunikace
  • Podpora zásad skupiny
  • Samostatné protokoly událostí

Rozdíly ve verzích .NET

PowerShell 7.2 je založený na .NET 6.0. Windows PowerShell 5.1 je založený na rozhraní .NET Framework 4.x. Rozdíly mezi verzemi .NET můžou mít vliv na chování skriptů, zejména pokud voláte přímo metodu .NET. Další informace najdete v rozdílech mezi Prostředím Windows PowerShell 5.1 a PowerShellem 7.x.

Samostatná instalační cesta a název spustitelného souboru

PowerShell 7 se nainstaluje do nového adresáře a povolí souběžné spouštění pomocí Windows PowerShellu 5.1.

Umístění instalace podle verze:

  • Windows PowerShell 5.1: $env:WINDIR\System32\WindowsPowerShell\v1.0
  • PowerShell 6.x: $env:ProgramFiles\PowerShell\6
  • PowerShell 7: $env:ProgramFiles\PowerShell\7

Nové umístění se přidá do cesty, takže můžete spustit Windows PowerShell 5.1 i PowerShell 7. Pokud migrujete z PowerShellu 6.x na PowerShell 7, odebere se PowerShell 6 a cesta se nahradí.

Ve Windows PowerShellu má spustitelný soubor PowerShellu název powershell.exe. Ve verzi 6 a vyšší je spustitelný soubor pojmenován pwsh.exe. Nový název usnadňuje souběžné spouštění obou verzí.

Samostatná cesta PSModulePath

Ve výchozím nastavení windows PowerShell a PowerShell 7 ukládají moduly do různých umístění. PowerShell 7 kombinuje tato umístění v $Env:PSModulePath proměnné prostředí. Při importu modulu podle názvu PowerShell zkontroluje umístění určené .$Env:PSModulePath To umožňuje, aby PowerShell 7 načetl moduly Core i Desktop.

Instalovat obor Windows PowerShell 5.1 PowerShell 7.0
Moduly PowerShellu $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $env:ProgramFiles\PowerShell\7\Modules
Uživatel nainstalovaný
Obor AllUsers
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
Uživatel nainstalovaný
Obor CurrentUser
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

Následující příklady ukazují výchozí hodnoty $Env:PSModulePath pro každou verzi.

  • Pro Windows PowerShell 5.1:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\WindowsPowerShell\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    
  • Pro PowerShell 7:

    $Env:PSModulePath -split (';')
    
    C:\Users\<user>\Documents\PowerShell\Modules
    C:\Program Files\PowerShell\Modules
    C:\Program Files\PowerShell\7\Modules
    C:\Program Files\WindowsPowerShell\Modules
    C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules
    

Všimněte si, že PowerShell 7 obsahuje cesty Windows PowerShellu a cesty PowerShellu 7, které poskytují automatické načítání modulů.

Poznámka:

Další cesty mohou existovat, pokud jste změnili proměnnou prostředí PSModulePath nebo nainstalovali vlastní moduly nebo aplikace.

Další informace najdete v tématu about_PSModulePath.

Další informace o modulech najdete v tématu about_Modules.

Samostatné profily

Profil PowerShellu je skript, který se spustí při spuštění PowerShellu. Tento skript přizpůsobí prostředí přidáním příkazů, aliasů, funkcí, proměnných, modulů a jednotek PowerShellu. Skript profilu zpřístupní tato přizpůsobení v každé relaci, aniž by bylo nutné je znovu vytvořit ručně.

Cesta k umístění profilu se změnila v PowerShellu 7.

  • Ve Windows PowerShellu 5.1 je $HOME\Documents\WindowsPowerShellumístění profilu .
  • V PowerShellu 7 je $HOME\Documents\PowerShellumístění profilu .

Změnily se také názvy souborů profilu:

$PROFILE | Select-Object *Host* | Format-List
 AllUsersAllHosts       : C:\Program Files\PowerShell\7\profile.ps1
 AllUsersCurrentHost    : C:\Program Files\PowerShell\7\Microsoft.PowerShell_profile.ps1
 CurrentUserAllHosts    : C:\Users\<user>\Documents\PowerShell\profile.ps1
 CurrentUserCurrentHost : C:\Users\<user>\Documents\PowerShell\Microsoft.PowerShell_profile.ps1

Další informace about_Profiles.

Kompatibilita PowerShellu 7 s moduly Windows PowerShellu 5.1

Většina modulů, které používáte ve Windows PowerShellu 5.1, už pracuje s PowerShellem 7, včetně Azure PowerShellu a Active Directory. Pokračujeme v práci s dalšími týmy a přidáváme nativní podporu PowerShellu 7 pro další moduly, včetně Microsoft Graphu, Office 365 a dalších. Aktuální seznam podporovaných modulů najdete v tématu Kompatibilita modulů PowerShellu 7.

Poznámka:

Ve Windows jsme také přidali přepínač UseWindowsPowerShell , který Import-Module usnadňuje přechod na PowerShell 7 pro uživatele používající nekompatibilní moduly. Další informace o této funkci najdete v tématu about_Windows_PowerShell_Compatibility.

Vzdálená komunikace prostředí PowerShell

Vzdálená komunikace PowerShellu umožňuje spustit jakýkoli příkaz PowerShellu na jednom nebo několika vzdálených počítačích. Můžete navázat trvalá připojení, spouštět interaktivní relace a spouštět skripty na vzdálených počítačích.

Vzdálené komunikace služby WS-Management

Windows PowerShell 5.1 a níže používají protokol WS-Management (WSMAN) pro vyjednávání připojení a přenos dat. Vzdálená správa systému Windows (WinRM) používá protokol WSMAN. Pokud je povolený WinRM, PowerShell 7 používá existující koncový bod Windows PowerShellu 5.1 s názvem Microsoft.PowerShell pro připojení vzdálené komunikace. Pokud chcete aktualizovat PowerShell 7 tak, aby zahrnoval vlastní koncový bod, spusťte rutinu Enable-PSRemoting . Informace o připojení ke konkrétním koncovým bodům najdete v tématu Vzdálené komunikace služby WS-Management v PowerShellu.

Pokud chcete používat vzdálenou správu Windows PowerShellu, musí být vzdálený počítač nakonfigurovaný pro vzdálenou správu. Další informace, včetně pokynů, naleznete v tématu O vzdálených požadavcích.

Další informace o práci se vzdálenou správou najdete v tématu Informace o vzdáleném přístupu

Vzdálené komunikace založené na SSH

V PowerShellu 6.x byla přidána komunikace založená na SSH, která podporuje jiné operační systémy, které nemůžou používat nativní komponenty Windows, jako je WinRM. Vzdálené komunikace SSH vytvoří na cílovém počítači hostitelský proces PowerShellu jako subsystém SSH. Podrobnosti a příklady nastavení vzdálené komunikace založené na SSH ve Windows nebo Linuxu najdete v tématu: Vzdálené komunikace PowerShellu přes SSH.

Poznámka:

Galerie prostředí PowerShell (PSGallery) obsahuje modul a rutinu, které automaticky konfiguruje vzdálené komunikace založené na SSH. Microsoft.PowerShell.RemotingTools Nainstalujte modul z PSGallery a spusťte rutinuEnable-SSH.

Rutiny New-PSSessiona Invoke-Command rutiny Enter-PSSessionmají nové sady parametrů pro podporu připojení SSH.

[-HostName <string>]  [-UserName <string>]  [-KeyFilePath <string>]

Pokud chcete vytvořit vzdálenou relaci, zadejte cílový počítač s parametrem HostName a zadejte uživatelské jméno s uživatelským jménem. Při interaktivním spouštění rutin se zobrazí výzva k zadání hesla.

Enter-PSSession -HostName <Computer> -UserName <Username>

Případně při použití parametru HostName zadejte informace o uživatelském jménu následované znakem at (@), následovaným názvem počítače.

Enter-PSSession -HostName <Username>@<Computer>

Ověřování pomocí klíče SSH můžete nastavit pomocí souboru privátního klíče s parametrem KeyFilePath . Další informace najdete v tématu Správa klíčů OpenSSH.

Podporované zásady skupiny

PowerShell obsahuje nastavení zásad skupiny, která vám pomůžou definovat konzistentní hodnoty možností pro servery v podnikovém prostředí. Mezi tato nastavení patří:

  • Konfigurace relace konzoly: Nastaví koncový bod konfigurace, ve kterém je spuštěný PowerShell.
  • Zapněte protokolování modulu: Nastaví vlastnost LogPipelineExecutionDetails modulů.
  • Zapněte protokolování bloku skriptu PowerShellu: Povolí podrobné protokolování všech skriptů PowerShellu.
  • Zapnutí spouštění skriptů: Nastaví zásady spouštění PowerShellu.
  • Zapnutí přepisu PowerShellu: Umožňuje zachytit vstup a výstup příkazů PowerShellu do textových přepisů.
  • Nastavte výchozí zdrojovou cestu pro Update-Help: Nastaví zdroj pro aktualizovatelnou nápovědu do adresáře, ne do internetu.

Další informace najdete v tématu about_Group_Policy_Settings.

PowerShell 7 obsahuje šablony zásad skupiny a instalační skript v $PSHOME.

Nástroje zásad skupiny používají soubory šablon pro správu (.admx, .adml) k naplnění nastavení zásad v uživatelském rozhraní. Správci tak můžou spravovat nastavení zásad na základě registru. Skript InstallPSCorePolicyDefinitions.ps1 nainstaluje powershellové Správa istrativní šablony na místní počítač.

Get-ChildItem -Path $PSHOME -Filter *Core*Policy*
    Directory: C:\Program Files\PowerShell\7

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a---           2/27/2020 12:38 AM          15861 InstallPSCorePolicyDefinitions.ps1
-a---           2/27/2020 12:28 AM           9675 PowerShellCoreExecutionPolicy.adml
-a---           2/27/2020 12:28 AM           6201 PowerShellCoreExecutionPolicy.admx

Samostatné protokoly událostí

Události protokolu Windows PowerShellu a PowerShellu 7 pro samostatné protokoly událostí. Pomocí následujícího příkazu získáte seznam protokolů PowerShellu.

Get-WinEvent -ListLog *PowerShell*

Další informace najdete v tématu about_Logging_Windows.

Vylepšené prostředí pro úpravy pomocí editoru Visual Studio Code

Visual Studio Code (VSCode) s rozšířením PowerShellu je podporované skriptovací prostředí pro PowerShell 7. Integrované skriptovací prostředí (ISE) windows PowerShellu podporuje jenom Windows PowerShell.

Aktualizované rozšíření PowerShellu zahrnuje:

  • Nový režim kompatibility ise
  • PSReadLine v integrované konzole, včetně zvýrazňování syntaxe, víceřádkové úpravy a zpětného vyhledávání
  • Vylepšení stability a výkonu
  • Nová integrace CodeLens
  • Vylepšené automatické dokončování cesty

Pokud chcete přechod na Visual Studio Code zjednodušit, použijte funkci Povolit režim ISE dostupnou v paletě příkazů. Tato funkce přepne VSCode do rozložení ve stylu ISE. Rozložení ve stylu ISE poskytuje všechny nové funkce a možnosti PowerShellu ve známém uživatelském prostředí.

Pokud chcete přepnout na nové rozložení ISE, otevřete stisknutím kombinace kláves Ctrl+Shift+P paletu příkazů, zadejte PowerShell a vyberte PowerShell: Povolit režim ISE.

Pokud chcete nastavit rozložení na původní rozložení, otevřete paletu příkazů a vyberte PowerShell: Zakázat režim ISE (obnovit výchozí nastavení).

Podrobnosti o přizpůsobení rozložení VSCode integrovanému vývojovému prostředí (ISE) najdete v tématu Postup replikace prostředí isE v editoru Visual Studio Code.

Poznámka:

Neplánují se aktualizovat isE novými funkcemi. V nejnovějších verzích Windows 10 nebo Windows Serveru 2019 a novějších je teď isE uživatelsky odinstalovatelnou funkcí. Neexistují žádné plány na trvalé odebrání isE. Tým PowerShellu a jeho partneři se zaměřují na vylepšení prostředí skriptování v rozšíření PowerShellu pro Visual Studio Code.

Další kroky

Vybaveno znalostmi efektivně migrovat, teď nainstalujte PowerShell 7 !