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:
- A PowerShell üzembe helyezése az MSI-csomag használatával
- A PowerShell üzembe helyezése a ZIP-csomag használatával
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 winget
a . 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:PSModulePath
helyet. 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 !