Migrera från Windows PowerShell 5.1 till PowerShell 7
PowerShell 7 är utformat för molnmiljöer, lokala miljöer och hybridmiljöer och är fullspäckat med förbättringar och nya funktioner.
- Installerar och kör sida vid sida med Windows PowerShell
- Förbättrad kompatibilitet med befintliga Windows PowerShell-moduler
- Nya språkfunktioner, som till exempel ternära operatörer och
ForEach-Object -Parallel
- Förbättrad prestanda
- SSH-baserad fjärrstyrning
- Samverkan mellan plattformar
- Stöd för Docker-containrar
PowerShell 7 fungerar sida vid sida med Windows PowerShell så att du enkelt kan testa och jämföra mellan utgåvor före distributionen. Migreringen är enkel, snabb och säker.
PowerShell 7 stöds på följande Windows-operativsystem:
- Windows 10 och 11
- Windows Server 2016, 2019 och 2022
PowerShell 7 körs också på macOS och flera Linux-distributioner. En lista över operativsystem som stöds och information om supportlivscykeln finns i PowerShell Support Lifecycle.
Installera PowerShell 7
För flexibilitet och för att stödja IT-, DevOps-teknikers och utvecklares behov finns det flera tillgängliga alternativ för att installera PowerShell 7. I de flesta fall kan installationsalternativen reduceras till följande metoder:
- Distribuera PowerShell med MSI-paket
- Distribuera PowerShell med ZIP-paketet
Anmärkning
MSI-paketet kan distribueras och uppdateras med hanteringsprodukter som Microsoft Configuration Manager. Ladda ned paketen från GitHub-versionssidan.
Distribution av MSI-paketet kräver administratörsbehörighet. ZIP-paketet kan distribueras av alla användare. ZIP-paketet är det enklaste sättet att installera PowerShell 7 för testning innan du genomför en fullständig installation.
Du kan också installera PowerShell 7 via Windows Store eller winget
. Mer information om båda dessa metoder finns i de detaljerade anvisningarna i Installera PowerShell på Windows.
Använda PowerShell 7 sida vid sida med Windows PowerShell 5.1
PowerShell 7 är utformat för att samexistera med Windows PowerShell 5.1. Följande funktioner säkerställer att din investering i PowerShell skyddas och att migreringen till PowerShell 7 är enkel.
- Separat installationssökväg och exekverbart namn
- Separera PSModulePath
- Separata profiler för varje version
- Förbättrad modulkompatibilitet
- Nya fjärrkommunikationsslutpunkter
- Stöd för gruppprincip
- Separata händelseloggar
Skillnader i .NET-versioner
PowerShell 7.4 bygger på .NET 8.0. Windows PowerShell 5.1 bygger på .NET Framework 4.x. Skillnaderna mellan .NET-versionerna kan påverka beteendet för dina skript, särskilt om du anropar .NET-metoden direkt. Mer information finns i skillnader mellan Windows PowerShell 5.1 och PowerShell 7.x.
Separat installationssökväg och körbart namn
PowerShell 7 installeras i en ny katalog, vilket möjliggör körning sida vid sida med Windows PowerShell 5.1.
Installera platser efter version:
- Windows PowerShell 5.1:
$Env:windir\System32\WindowsPowerShell\v1.0
- PowerShell 6.x:
$Env:ProgramFiles\PowerShell\6
- PowerShell 7:
$Env:ProgramFiles\PowerShell\7
Den nya platsen läggs till i din PATH så att du kan köra både Windows PowerShell 5.1 och PowerShell 7. Om du migrerar från PowerShell 6.x till PowerShell 7 tas PowerShell 6 bort och PATH ersätts.
I Windows PowerShell heter den körbara PowerShell-filen powershell.exe
. I version 6 och senare heter den körbara filen pwsh.exe
. Det nya namnet gör det enkelt att stödja körning sida vid sida av båda versionerna.
Separera PSModulePath
Som standard lagrar Windows PowerShell- och PowerShell 7-moduler på olika platser. PowerShell 7 kombinerar dessa platser i $Env:PSModulePath
miljövariabeln. När du importerar en modul efter namn kontrollerar PowerShell den plats som anges av $Env:PSModulePath
. På så sätt kan PowerShell 7 läsa in både Core- och Desktop-moduler.
Installera omfång | Windows PowerShell 5.1 | PowerShell 7.0 |
---|---|---|
PowerShell-moduler | $Env:windir\system32\WindowsPowerShell\v1.0\Modules |
$Env:ProgramFiles\PowerShell\7\Modules |
Användaren har installerat AllUsers-omfång |
$Env:ProgramFiles\WindowsPowerShell\Modules |
$Env:ProgramFiles\PowerShell\Modules |
Användaren har installerats CurrentUser-behörighet |
$HOME\Documents\WindowsPowerShell\Modules |
$HOME\Documents\PowerShell\Modules |
I följande exempel visas standardvärdena för $Env:PSModulePath
för varje version.
För 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
För 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
Observera att PowerShell 7 innehåller Windows PowerShell-sökvägarna och PowerShell 7-sökvägarna för automatisk inläsning av moduler.
Anmärkning
Det kan finnas ytterligare sökvägar om du har ändrat miljövariabeln PSModulePath eller har installerat anpassade moduler eller program.
Mer information finns i about_PSModulePath.
Mer information om moduler finns i about_Modules.
Separata profiler
En PowerShell-profil är ett skript som körs när PowerShell startar. Det här skriptet anpassar din miljö genom att lägga till kommandon, alias, funktioner, variabler, moduler och PowerShell-enheter. Profilskriptet gör dessa anpassningar tillgängliga i varje session utan att behöva återskapa dem manuellt.
Sökvägen till profilens plats har ändrats i PowerShell 7.
- I Windows PowerShell 5.1 är profilens plats
$HOME\Documents\WindowsPowerShell
. - I PowerShell 7 är profilens plats
$HOME\Documents\PowerShell
.
Profilfilnamnen har också ändrats:
$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
Mer information about_Profiles.
PowerShell 7-kompatibilitet med Windows PowerShell 5.1-moduler
De flesta moduler som du använder i Windows PowerShell 5.1 fungerar redan med PowerShell 7, inklusive Azure PowerShell och Active Directory. Vi fortsätter att arbeta med andra team för att lägga till inbyggt PowerShell 7-stöd för fler moduler, inklusive Microsoft Graph, Office 365 och andra. Den aktuella listan över moduler som stöds finns i PowerShell 7-modulkompatibilitet.
Anmärkning
I Windows har vi också lagt till en UseWindowsPowerShell växla till Import-Module
för att underlätta övergången till PowerShell 7 för dem som använder inkompatibla moduler. Mer information om den här funktionen finns i about_Windows_PowerShell_Compatibility.
PowerShell-fjärranslutning
Med PowerShell-fjärrkommunikation kan du köra alla PowerShell-kommandon på en eller flera fjärrdatorer. Du kan upprätta beständiga anslutningar, starta interaktiva sessioner och köra skript på fjärrdatorer.
WS-Management fjärrstyrning
Windows PowerShell 5.1 och nedan använder protokollet WS-Management (WSMAN) för anslutningsförhandling och datatransport. Windows Remote Management (WinRM) använder WSMAN-protokollet. Om WinRM har aktiverats använder PowerShell 7 den befintliga Windows PowerShell 5.1-slutpunkten med namnet Microsoft.PowerShell
för fjärrkommunikationsanslutningar. Om du vill uppdatera PowerShell 7 så att den innehåller en egen slutpunkt kör du cmdleten Enable-PSRemoting
. Information om hur du ansluter till specifika slutpunkter finns i WS-Management Fjärrkommunikation i PowerShell
Om du vill använda Windows PowerShell-fjärrkommunikation måste fjärrdatorn konfigureras för fjärrhantering. Mer information, inklusive instruktioner, finns i Om fjärrkrav.
Mer information om hur du arbetar med fjärrkommunikation finns i Om fjärrkommunikation
SSH-baserad fjärrkommunikation
SSH-baserad fjärrkommunikation lades till i PowerShell 6.x för att stödja andra operativsystem som inte kan använda inbyggda Windows-komponenter som WinRM-. SSH-fjärrkommunikationen skapar en PowerShell-värdprocess på måldatorn som en del av SSH-undersystemet. Mer information och exempel på hur du konfigurerar SSH-baserad fjärrstyrning i Windows eller Linux finns i: PowerShell fjärrstyrning via SSH.
Anmärkning
PowerShell-galleriet (PSGallery) innehåller en modul och kommandlet som automatiskt konfigurerar SSH-baserad fjärrstyrning. Installera Microsoft.PowerShell.RemotingTools
-modulen från PSGallery- och kör cmdleten Enable-SSH
.
Cmdletarna New-PSSession
, Enter-PSSession
och Invoke-Command
har nya parameteruppsättningar som stöder SSH-anslutningar.
[-HostName <string>] [-UserName <string>] [-KeyFilePath <string>]
Om du vill skapa en fjärrsession anger du måldatorn med parametern HostName och anger användarnamnet med UserName. När du kör cmdletarna interaktivt uppmanas du att ange ett lösenord.
Enter-PSSession -HostName <Computer> -UserName <Username>
Om du använder parametern HostName anger du användarnamnsinformationen följt av vidtecknet (@
), följt av datornamnet.
Enter-PSSession -HostName <Username>@<Computer>
Du kan konfigurera SSH-nyckelautentisering med hjälp av en privat nyckelfil med parametern KeyFilePath. Mer information finns i OpenSSH Key Management.
Grupprincip stöds
PowerShell innehåller grupprincipinställningar som hjälper dig att definiera konsekventa alternativvärden för servrar i en företagsmiljö. De här inställningarna omfattar:
- Konfiguration av konsolsession: Anger en konfigurationsslutpunkt där PowerShell körs.
- Aktivera modulloggning: Anger egenskapen LogPipelineExecutionDetails för moduler.
- Aktivera skriptblockloggning i PowerShell: Möjliggör detaljerad loggning av alla PowerShell-skript.
- Aktivera skriptkörning: Anger PowerShell-körningsprincipen.
- Aktivera PowerShell-transkription: möjliggör insamling av indata och utdata från PowerShell-kommandon i textbaserade transkriptioner.
- Ange standardsökvägen för Uppdateringshjälp: Anger källan för updatable-hjälpen till en katalog, inte Internet.
Mer information finns i about_Group_Policy_Settings.
PowerShell 7 innehåller grupprincipmallar och ett installationsskript i $PSHOME
.
Grupprincipverktyg använder administrativa mallfiler (.admx
, .adml
) för att fylla i principinställningar i användargränssnittet. På så sätt kan administratörer hantera registerbaserade principinställningar. Skriptet InstallPSCorePolicyDefinitions.ps1
installerar PowerShell Administrativa mallar på den lokala datorn.
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
Separata händelseloggar
Windows PowerShell och PowerShell 7 loggar händelser i separata händelseloggar. Använd följande kommando för att hämta en lista över PowerShell-loggarna.
Get-WinEvent -ListLog *PowerShell*
Mer information finns i about_Logging_Windows.
Förbättrad redigeringsupplevelse med Visual Studio Code
Visual Studio Code (VSCode) med PowerShell-tillägget är skriptmiljön som stöds för PowerShell 7. Windows PowerShell Integrated Scripting Environment (ISE) stöder endast Windows PowerShell.
Det uppdaterade PowerShell-tillägget innehåller:
- Nytt ISE-kompatibilitetsläge
- PSReadLine i den integrerade konsolen, inklusive syntaxmarkering, redigering med flera rader och bakåtsökning
- Stabilitets- och prestandaförbättringar
- Ny CodeLens-integrering
- Förbättrad automatisk komplettering av sökväg
För att göra övergången till Visual Studio Code enklare ska du använda funktionen Enable ISE Mode som finns i Command Palette. Den här funktionen växlar VSCode till en ISE-layout. Layouten i ISE-stil ger dig alla nya funktioner och funktioner i PowerShell i en välbekant användarupplevelse.
Om du vill växla till den nya ISE-layouten trycker du på Ctrl+Skift+P för att öppna kommandopaletten, skriver PowerShell
och väljer PowerShell: Aktivera ISE-läge.
Om du vill ange layouten till den ursprungliga layouten öppnar du kommandopaletten, väljer PowerShell: Inaktivera ISE-läge (återställ till standardvärden).
Mer information om hur du anpassar VSCode-layouten till ISE finns i Replikera ISE-upplevelsen i Visual Studio Code
Anmärkning
Det finns inga planer på att uppdatera ISE med nya funktioner. I de senaste versionerna av Windows 10 eller Windows Server 2019 och senare är ISE nu en funktion som kan avinstalleras av användaren. Det finns inga planer på att ta bort ISE permanent. PowerShell-teamet och dess partner fokuserar på att förbättra skriptupplevelsen i PowerShell-tillägget för Visual Studio Code.
Nästa steg
Beväpnad med kunskap för att effektivt migrera installera PowerShell 7 nu!