Migrálás a Windows PowerShell 5.1-ről a PowerShell 7-re

A felhőalapú, helyszíni és hibrid környezetekhez tervezett PowerShell 7 számos fejlesztéssel és új funkcióval rendelkezik.

  • Telepítése és futtatása egymás mellett a Windows PowerShell használatával
  • Továbbfejlesztett kompatibilitás a meglévő Windows PowerShell-modulokkal
  • Új nyelvi funkciók, például ternáris operátorok és ForEach-Object -Parallel
  • Jobb teljesítmény
  • SSH-alapú újraküldés
  • Platformfüggetlen együttműködés
  • Docker-tárolók támogatása

A PowerShell 7 párhuzamosan működik a Windows PowerShell-lel, így az üzembe helyezés előtt egyszerűen tesztelheti és összehasonlíthatja a kiadásokat. A migrálás egyszerű, gyors és biztonságos.

A PowerShell 7 a következő Windows operációs rendszereken támogatott:

  • Windows 10 és 11
  • Windows Server 2016, 2019 és 2022

A PowerShell 7 macOS-en és több Linux-disztribúción is fut. A támogatott operációs rendszerek listáját és a támogatási életciklussal kapcsolatos információkat a PowerShell támogatási életciklusában találja.

A PowerShell 7 telepítése

A rugalmasság és az informatikai, DevOps-mérnökök és fejlesztők igényeinek támogatása érdekében a PowerShell 7 telepítéséhez számos lehetőség áll rendelkezésre. A legtöbb esetben a telepítési lehetőségek a következő módszerekre csökkenthetők:

Feljegyzés

Az MSI-csomag üzembe helyezhető és frissíthető olyan felügyeleti termékekkel, mint a Microsoft Configuration Manager. Töltse le a csomagokat a GitHub kiadási oldaláról.

Az MSI-csomag üzembe helyezéséhez Rendszergazda istrator-engedély szükséges. A ZIP-csomagot bármely felhasználó üzembe helyezheti. A ZIP-csomag a PowerShell 7 tesztelésre való telepítésének legegyszerűbb módja, mielőtt véglegesíti a teljes telepítést.

A PowerShell 7-et a Windows Áruházban vagy wingeta . Mindkét módszerről további információt a PowerShell Windows rendszeren való telepítésével kapcsolatos részletes útmutatóban talál.

A PowerShell 7 használata egymás mellett a Windows PowerShell 5.1-zel

A PowerShell 7 a Windows PowerShell 5.1 együttes használatához készült. Az alábbi funkciók biztosítják, hogy a PowerShellbe történő befektetés védett legyen, és a PowerShell 7-be való migrálás egyszerű legyen.

  • Külön telepítési útvonal és végrehajtható név
  • PSModulePath elkülönítése
  • Külön profilok az egyes verziókhoz
  • Továbbfejlesztett modulkompatibilitás
  • Új újraküldési végpontok
  • Csoportházirend támogatása
  • Eseménynaplók elkülönítése

Különbségek a .NET-verziókban

A PowerShell 7.2 a .NET 6.0-ra épül. A Windows PowerShell 5.1 .NET-keretrendszer 4.x-en alapul. A .NET-verziók közötti különbségek hatással lehetnek a szkriptek viselkedésére, különösen akkor, ha a .NET-metódust közvetlenül hívja meg. További információ: Különbségek a Windows PowerShell 5.1 és a PowerShell 7.x között.

Külön telepítési útvonal és végrehajtható név

A PowerShell 7 egy új könyvtárba telepíthető, amely lehetővé teszi a párhuzamos végrehajtást a Windows PowerShell 5.1-zel.

Telepítési helyek verzió szerint:

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

Az új hely hozzá lesz adva a PATH-hoz, amely lehetővé teszi a Windows PowerShell 5.1 és a PowerShell 7 futtatását. Ha a PowerShell 6.x-ről a PowerShell 7-re migrál, a PowerShell 6 el lesz távolítva, és a PATH helyére kerül.

A Windows PowerShellben a végrehajtható PowerShell neve powershell.exe. A 6-os és újabb verzióban a végrehajtható fájl neve pwsh.exe. Az új név megkönnyíti mindkét verzió egymás melletti végrehajtását.

PSModulePath elkülönítése

Alapértelmezés szerint a Windows PowerShell és a PowerShell 7 különböző helyeken tárolja a modulokat. A PowerShell 7 egyesíti ezeket a helyeket a $Env:PSModulePath környezeti változóban. Modul név szerinti importálásakor a PowerShell ellenőrzi a megadott $Env:PSModulePathhelyet. Ez lehetővé teszi, hogy a PowerShell 7 a Core és az Asztali modulokat is betöltse.

Hatókör telepítése Windows PowerShell 5.1 PowerShell 7.0
PowerShell-modulok $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $env:ProgramFiles\PowerShell\7\Modules
Felhasználó telepítve
AllUsers-hatókör
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
Felhasználó telepítve
CurrentUser-hatókör
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

Az alábbi példák az egyes verziók alapértelmezett értékeit $Env:PSModulePath mutatják be.

  • Windows PowerShell 5.1 esetén:

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

    $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
    

Figyelje meg, hogy a PowerShell 7 tartalmazza a Windows PowerShell elérési útjait és a PowerShell 7 elérési útját a modulok automatikus betöltéséhez.

Feljegyzés

További útvonalak is létezhetnek, ha módosította a PSModulePath környezeti változót, vagy egyéni modulokat vagy alkalmazásokat telepített.

További információ: about_PSModulePath.

További információ a modulokról: about_Modules.

Profilok elkülönítése

A PowerShell-profilok olyan szkriptek, amelyek a PowerShell indításakor futnak. Ez a szkript parancsok, aliasok, függvények, változók, modulok és PowerShell-meghajtók hozzáadásával testre szabja a környezetet. A profilszkript minden munkamenetben elérhetővé teszi ezeket a testreszabásokat anélkül, hogy manuálisan kellene újra létrehozni őket.

A profil helyének elérési útja megváltozott a PowerShell 7-ben.

  • A Windows PowerShell 5.1-ben a profil helye .$HOME\Documents\WindowsPowerShell
  • A PowerShell 7-ben a profil helye .$HOME\Documents\PowerShell

A profilfájlnevek is megváltoztak:

$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

További információkért about_Profiles.

A PowerShell 7 kompatibilitása a Windows PowerShell 5.1-modulokkal

A Windows PowerShell 5.1-ben használt modulok többsége már működik a PowerShell 7-zel, beleértve az Azure PowerShellt és az Active Directoryt is. Továbbra is együttműködünk más csapatokkal, hogy natív PowerShell 7-támogatást adjunk további modulokhoz, például a Microsoft Graphhoz, az Office 365-höz és más modulokhoz. A támogatott modulok aktuális listájáért lásd a PowerShell 7 modulkompatibilitását.

Feljegyzés

Windows rendszeren egy UseWindowsPowerShell-kapcsolót is hozzáadtunk, hogy Import-Module megkönnyítsük a PowerShell 7-re való áttérést az inkompatibilis modulokat használó felhasználók számára. További információ erről a funkcióról: about_Windows_PowerShell_Compatibility.

PowerShell távvezérlése

A PowerShell-remoting lehetővé teszi bármely PowerShell-parancs futtatását egy vagy több távoli számítógépen. Állandó kapcsolatokat hozhat létre, interaktív munkameneteket indíthat, és szkripteket futtathat távoli számítógépeken.

WS-Management újraegyezés

A Windows PowerShell 5.1 és újabb verzió a WS-Management (WSMAN) protokollt használja a kapcsolat egyeztetéséhez és az adatátvitelhez. A Windows Remote Management (WinRM) a WSMAN protokollt használja. Ha a WinRM engedélyezve van, a PowerShell 7 a meglévő Windows PowerShell 5.1-végpontot használja, amely a kapcsolatok újraküldésére lett elnevezve Microsoft.PowerShell . Ha úgy szeretné frissíteni a PowerShell 7-et, hogy saját végpontot is tartalmazzon, futtassa a Enable-PSRemoting parancsmagot. További információ az adott végpontokhoz való csatlakozásról: WS-Management Remoting in PowerShell

A Windows PowerShell-remoting használatához a távoli számítógépet távoli felügyeletre kell konfigurálni. További információkért, beleértve az utasításokat is, olvassa el a Távoli követelmények című témakört.

Az újraegyenlítéssel kapcsolatos további információkért lásd : Távoli

SSH-alapú újraküldés

Az SSH-alapú remoting a PowerShell 6.x-ben lett hozzáadva más olyan operációs rendszerek támogatásához, amelyek nem tudják használni a Windows natív összetevőit, például a WinRM-et. Az SSH-remoting egy PowerShell-gazdafolyamatot hoz létre a célszámítógépen SSH-alrendszerként. Az SSH-alapú átállítás Windowson vagy Linuxon történő beállításával kapcsolatos részletekért és példákért lásd: PowerShell-remoting over SSH.

Feljegyzés

A PowerShell-galéria (PSGallery) tartalmaz egy modult és parancsmagot, amely automatikusan konfigurálja az SSH-alapú újraírást. Telepítse a modult Microsoft.PowerShell.RemotingTools a PSGalleryből , és futtassa a Enable-SSH parancsmagot.

A New-PSSession, Enter-PSSessionés Invoke-Command parancsmagok új paraméterkészletekkel rendelkeznek az SSH-kapcsolatok támogatásához.

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

Távoli munkamenet létrehozásához adja meg a célszámítógépet a HostName paraméterrel, és adja meg a felhasználónevet a UserName paraméterrel. A parancsmagok interaktív futtatásakor a rendszer jelszót kér.

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

Másik lehetőségként a HostName paraméter használatakor adja meg a felhasználónév adatait, majd az at sign (@), majd a számítógép nevét.

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

Az SSH-kulcs hitelesítését egy titkos kulcsfájllal állíthatja be a KeyFilePath paraméterrel. További információ: OpenSSH Key Management.

Támogatott csoportházirend

A PowerShell csoportházirend-beállításokat tartalmaz, amelyekkel konzisztens beállításértékeket határozhat meg a vállalati környezetben lévő kiszolgálókhoz. Ezek a beállítások többek között:

  • Konzol munkamenet-konfigurációja: Beállít egy konfigurációs végpontot, amelyben a PowerShell fut.
  • Modulnaplózás bekapcsolása: Beállítja a modulok LogPipelineExecutionDetails tulajdonságát.
  • Kapcsolja be a PowerShell-szkriptblokknaplózást: Engedélyezi az összes PowerShell-szkript részletes naplózását.
  • Szkriptvégrehajtás bekapcsolása: Beállítja a PowerShell végrehajtási szabályzatát.
  • Kapcsolja be a PowerShell-átírást: lehetővé teszi a PowerShell-parancsok bemenetének és kimenetének szöveges átiratokba való rögzítését.
  • Az Update-Help alapértelmezett forrásútvonalának beállítása: Az frissíthető súgó forrását címtárra állítja, nem az internetre.

További információért lásd: about_Group_Policy_Settings.

A PowerShell 7 csoportházirend-sablonokat és telepítési szkripteket tartalmaz a következőben $PSHOME: .

A csoportházirend-eszközök felügyeleti sablonfájlokat (.admx, .adml) használnak a szabályzatbeállítások felhasználói felületen való feltöltéséhez. Ez lehetővé teszi a rendszergazdák számára a beállításjegyzék-alapú házirend-beállítások kezelését. A InstallPSCorePolicyDefinitions.ps1 szkript telepíti a PowerShell Rendszergazda istrative sablonjait a helyi gépen.

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

Eseménynaplók elkülönítése

A Windows PowerShell és a PowerShell 7 naplóeseményei az eseménynaplók elkülönítéséhez. Az alábbi paranccsal lekérheti a PowerShell-naplók listáját.

Get-WinEvent -ListLog *PowerShell*

További információ: about_Logging_Windows.

Továbbfejlesztett szerkesztési élmény a Visual Studio Code-ban

A PowerShell-bővítményt tartalmazó Visual Studio Code (VSCode) a PowerShell 7 támogatott szkriptkörnyezete. A Windows PowerShell integrált szkriptelési környezete (I Standard kiadás) csak a Windows PowerShellt támogatja.

A frissített PowerShell-bővítmény a következőket tartalmazza:

  • Új I Standard kiadás kompatibilitási mód
  • PSReadLine az integrált konzolon, beleértve a szintaxis kiemelését, a többsoros szerkesztést és a visszakeresést
  • Stabilitási és teljesítménybeli fejlesztések
  • Új CodeLens-integráció
  • Továbbfejlesztett elérési út automatikus kiegészítése

A Visual Studio Code-ra való áttérés megkönnyítéséhez használja az Enable I Standard kiadás Mode függvényt a parancskatalógusban. Ez a függvény I Standard kiadás stílusú elrendezésre váltja a VSCode-ot. Az I Standard kiadás stílusú elrendezés a PowerShell összes új funkcióját és képességeit biztosítja egy ismerős felhasználói felületen.

Az új I Standard kiadás elrendezésre váltáshoz nyomja le a Ctrl Shift P billentyűkombinációt ++a parancskatalógus megnyitásához, írja be PowerShell és válassza a PowerShellt: Engedélyezem Standard kiadás mód.

Ha az elrendezést az eredeti elrendezésre szeretné állítani, nyissa meg a parancskatalógust, és válassza a PowerShell: Az I Standard kiadás mód letiltása (visszaállítás alapértelmezettre) lehetőséget.

A VSCode-elrendezés I Standard kiadás-ra való testreszabásával kapcsolatos részletekért lásd: Az I Standard kiadás élmény replikálása a Visual Studio Code-ban

Feljegyzés

Nincsenek tervek az I Standard kiadás új funkciókkal való frissítésére. A Windows 10 vagy Windows Server 2019 és újabb verziók legújabb verzióiban az I Standard kiadás mostantól egy felhasználó által eltávolítható funkció. Nincs terv az I Standard kiadás végleges eltávolítására. A PowerShell csapata és partnerei a Visual Studio Code PowerShell-bővítményének szkriptelési élményének javítására összpontosítanak.

Következő lépések

A hatékony migráláshoz szükséges tudással felvértezve telepítse most a PowerShell 7-et !