Delen via


Migreren van Windows PowerShell 5.1 naar PowerShell 7

PowerShell 7 is ontworpen voor cloud-, on-premises en hybride omgevingen en bevat verbeteringen en nieuwe functies.

  • Wordt naast Windows PowerShell geïnstalleerd en uitgevoerd
  • Verbeterde compatibiliteit met bestaande Windows PowerShell-modules
  • Nieuwe taalfuncties, zoals ternaire operators en ForEach-Object -Parallel
  • Betere prestaties
  • Externe communicatie op basis van SSH
  • Platformoverschrijdende interoperabiliteit
  • Ondersteuning voor Docker-containers

PowerShell 7 werkt naast Windows PowerShell, zodat u eenvoudig kunt testen en vergelijken tussen edities vóór de implementatie. Migratie is eenvoudig, snel en veilig.

PowerShell 7 wordt ondersteund op de volgende Windows-besturingssystemen:

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

PowerShell 7 wordt ook uitgevoerd op macOS en verschillende Linux-distributies. Zie de ondersteuningslevenscyclus van PowerShell voor een lijst met ondersteunde besturingssystemen en informatie over de levenscyclus van de ondersteuning.

PowerShell 7 installeren

Voor flexibiliteit en ondersteuning van de behoeften van IT-, DevOps-technici en ontwikkelaars zijn er verschillende opties beschikbaar om PowerShell 7 te installeren. In de meeste gevallen kunnen de installatieopties worden beperkt tot de volgende methoden:

  • PowerShell implementeren met behulp van het MSI-pakket
  • PowerShell implementeren met behulp van het ZIP-pakket

Notitie

Het MSI-pakket kan worden geïmplementeerd en bijgewerkt met beheerproducten zoals Microsoft Configuration Manager. Download de pakketten van de GitHub Release-pagina.

Voor het implementeren van het MSI-pakket is Beheer istrator-machtiging vereist. Het ZIP-pakket kan door elke gebruiker worden geïmplementeerd. Het ZIP-pakket is de eenvoudigste manier om PowerShell 7 te installeren voordat u een volledige installatie uitvoert.

U kunt PowerShell 7 ook installeren via de Windows Store of winget. Zie de gedetailleerde instructies voor het installeren van PowerShell in Windows voor meer informatie over beide methoden.

PowerShell 7 naast Windows PowerShell 5.1 gebruiken

PowerShell 7 is ontworpen om naast Windows PowerShell 5.1 te bestaan. De volgende functies zorgen ervoor dat uw investering in PowerShell is beveiligd en uw migratie naar PowerShell 7 eenvoudig is.

  • Afzonderlijke installatiepad en uitvoerbare naam
  • Afzonderlijk PSModulePath
  • Afzonderlijke profielen voor elke versie
  • Verbeterde modulecompatibiliteit
  • Nieuwe externe eindpunten
  • Ondersteuning voor groepsbeleid
  • Afzonderlijke gebeurtenislogboeken

Verschillen in .NET-versies

PowerShell 7.2 is gebouwd op .NET 6.0. Windows PowerShell 5.1 is gebouwd op .NET Framework 4.x. De verschillen tussen de .NET-versies kunnen van invloed zijn op het gedrag van uw scripts, met name als u de .NET-methode rechtstreeks aanroept. Verschillen tussen Windows PowerShell 5.1 en PowerShell 7.x voor meer informatie.

Afzonderlijke installatiepad en uitvoerbare naam

PowerShell 7 wordt geïnstalleerd in een nieuwe map, waardoor uitvoering naast elkaar kan worden uitgevoerd met Windows PowerShell 5.1.

Locaties installeren op versie:

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

De nieuwe locatie wordt toegevoegd aan uw PATH, zodat u zowel Windows PowerShell 5.1 als PowerShell 7 kunt uitvoeren. Als u migreert van PowerShell 6.x naar PowerShell 7, wordt PowerShell 6 verwijderd en wordt het PAD vervangen.

In Windows PowerShell heeft het uitvoerbare PowerShell-bestand de naam powershell.exe. In versie 6 en hoger heeft het uitvoerbare bestand de naam pwsh.exe. De nieuwe naam maakt het eenvoudig om de uitvoering van beide versies naast elkaar te ondersteunen.

Afzonderlijk PSModulePath

Standaard slaan Windows PowerShell- en PowerShell 7-modules op verschillende locaties op. PowerShell 7 combineert deze locaties in de $Env:PSModulePath omgevingsvariabele. Wanneer u een module op naam importeert, controleert PowerShell de locatie die is opgegeven door $Env:PSModulePath. Hierdoor kan PowerShell 7 zowel Core- als Desktop-modules laden.

Bereik installeren Windows PowerShell 5.1 PowerShell 7.0
PowerShell-modules $env:WINDIR\system32\WindowsPowerShell\v1.0\Modules $env:ProgramFiles\PowerShell\7\Modules
Gebruiker geïnstalleerd
Bereik AllUsers
$env:ProgramFiles\WindowsPowerShell\Modules $env:ProgramFiles\PowerShell\Modules
Gebruiker geïnstalleerd
CurrentUser-bereik
$HOME\Documents\WindowsPowerShell\Modules $HOME\Documents\PowerShell\Modules

In de volgende voorbeelden ziet u de standaardwaarden voor $Env:PSModulePath elke versie.

  • Voor 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
    
  • Voor 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
    

U ziet dat PowerShell 7 de Windows PowerShell-paden en de PowerShell 7-paden bevat voor het automatisch laden van modules.

Notitie

Er kunnen extra paden bestaan als u de omgevingsvariabele PSModulePath hebt gewijzigd of aangepaste modules of toepassingen hebt geïnstalleerd.

Zie about_PSModulePath voor meer informatie.

Zie about_Modules voor meer informatie over modules.

Afzonderlijke profielen

Een PowerShell-profiel is een script dat wordt uitgevoerd wanneer PowerShell wordt gestart. Met dit script past u uw omgeving aan door opdrachten, aliassen, functies, variabelen, modules en PowerShell-stations toe te voegen. Het profielscript maakt deze aanpassingen beschikbaar in elke sessie zonder ze handmatig opnieuw te hoeven maken.

Het pad naar de locatie van het profiel is gewijzigd in PowerShell 7.

  • In Windows PowerShell 5.1 is $HOME\Documents\WindowsPowerShellde locatie van het profiel.
  • In PowerShell 7 is $HOME\Documents\PowerShellde locatie van het profiel.

De profielbestandsnamen zijn ook gewijzigd:

$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

Voor meer informatie about_Profiles.

Compatibiliteit met PowerShell 7 met Windows PowerShell 5.1-modules

De meeste modules die u in Windows PowerShell 5.1 gebruikt, werken al met PowerShell 7, waaronder Azure PowerShell en Active Directory. We blijven samenwerken met andere teams om systeemeigen PowerShell 7-ondersteuning toe te voegen voor meer modules, waaronder Microsoft Graph, Office 365 en anderen. Zie de compatibiliteit van PowerShell 7-modules voor de huidige lijst met ondersteunde modules.

Notitie

In Windows hebben we ook een UseWindowsPowerShell-switch toegevoegd om Import-Module de overgang naar PowerShell 7 te vereenvoudigen voor degenen die incompatibele modules gebruiken. Zie about_Windows_PowerShell_Compatibility voor meer informatie over deze functionaliteit.

Externe communicatie met PowerShell

Met externe communicatie via PowerShell kunt u elke PowerShell-opdracht uitvoeren op een of meer externe computers. U kunt permanente verbindingen tot stand brengen, interactieve sessies starten en scripts uitvoeren op externe computers.

Externe communicatie van WS-Management

Windows PowerShell 5.1 en lager gebruiken het WS-Management-protocol (WSMAN) voor verbindingsonderhandeling en gegevenstransport. Windows Remote Management (WinRM) maakt gebruik van het WSMAN-protocol. Als WinRM is ingeschakeld, gebruikt PowerShell 7 het bestaande Windows PowerShell 5.1-eindpunt met de naam Microsoft.PowerShell voor externe verbindingen. Als u PowerShell 7 wilt bijwerken om een eigen eindpunt op te nemen, voert u de Enable-PSRemoting cmdlet uit. Zie WS-Management Remoting in PowerShell voor meer informatie over het maken van verbinding met specifieke eindpunten

Als u externe communicatie met Windows PowerShell wilt gebruiken, moet de externe computer worden geconfigureerd voor extern beheer. Zie Over externe vereisten voor meer informatie, inclusief instructies.

Zie Over Remote voor meer informatie over het werken met externe toegang

Externe communicatie op basis van SSH

Externe communicatie op basis van SSH is toegevoegd in PowerShell 6.x ter ondersteuning van andere besturingssystemen die geen systeemeigen Windows-onderdelen zoals WinRM kunnen gebruiken. Met SSH voor externe toegang wordt een PowerShell-hostproces op de doelcomputer gemaakt als een SSH-subsysteem. Zie voor meer informatie en voorbeelden over het instellen van externe communicatie op basis van SSH in Windows of Linux: Externe communicatie van PowerShell via SSH.

Notitie

De PowerShell Gallery (PSGallery) bevat een module en cmdlet waarmee externe communicatie op basis van SSH automatisch wordt geconfigureerd. Installeer de Microsoft.PowerShell.RemotingTools module vanuit de PSGallery en voer de Enable-SSH cmdlet uit.

De New-PSSession, Enter-PSSessionen Invoke-Command cmdlets hebben nieuwe parametersets ter ondersteuning van SSH-verbindingen.

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

Als u een externe sessie wilt maken, geeft u de doelcomputer op met de parameter HostName en geeft u de gebruikersnaam op met Gebruikersnaam. Wanneer u de cmdlets interactief uitvoert, wordt u gevraagd om een wachtwoord.

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

Als u de parameter HostName gebruikt, kunt u ook de gebruikersnaamgegevens opgeven, gevolgd door het at-teken (@), gevolgd door de computernaam.

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

U kunt SSH-sleutelverificatie instellen met behulp van een privésleutelbestand met de parameter KeyFilePath . Zie OpenSSH-sleutelbeheer voor meer informatie.

Groepsbeleid ondersteund

PowerShell bevat groepsbeleidsinstellingen om u te helpen bij het definiëren van consistente optiewaarden voor servers in een bedrijfsomgeving. Deze instellingen zijn onder meer:

  • Consolesessieconfiguratie: hiermee stelt u een configuratie-eindpunt in waarin PowerShell wordt uitgevoerd.
  • Schakel Modulelogboekregistratie in: Hiermee stelt u de eigenschap LogPipelineExecutionDetails van modules in.
  • Schakel Logboekregistratie van PowerShell-scriptblokkering in: hiermee schakelt u gedetailleerde logboekregistratie van alle PowerShell-scripts in.
  • Scriptuitvoering inschakelen: hiermee stelt u het PowerShell-uitvoeringsbeleid in.
  • Schakel PowerShell-transcriptie in: hiermee kunt u invoer en uitvoer van PowerShell-opdrachten vastleggen in transcripties op basis van tekst.
  • Stel het standaardbronpad in voor Update-Help: hiermee stelt u de bron in voor Help-updatable Help voor een map, niet op internet.

Zie about_Group_Policy_Settings voor meer informatie.

PowerShell 7 bevat groepsbeleidssjablonen en een installatiescript in $PSHOME.

Groepsbeleid-hulpprogramma's gebruiken beheersjabloonbestanden (.admx, .adml) om beleidsinstellingen in de gebruikersinterface te vullen. Hierdoor kunnen beheerders beleidsinstellingen op basis van registers beheren. Het InstallPSCorePolicyDefinitions.ps1 script installeert PowerShell Beheer istratieve sjablonen op de lokale computer.

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

Afzonderlijke gebeurtenislogboeken

Windows PowerShell- en PowerShell 7-logboeken registreren om gebeurtenislogboeken te scheiden. Gebruik de volgende opdracht om een lijst met de PowerShell-logboeken op te halen.

Get-WinEvent -ListLog *PowerShell*

Zie about_Logging_Windows voor meer informatie.

Verbeterde bewerkingservaring met Visual Studio Code

Visual Studio Code (VSCode) met de PowerShell-extensie is de ondersteunde scriptomgeving voor PowerShell 7. De Windows PowerShell Integrated Scripting Environment (ISE) ondersteunt alleen Windows PowerShell.

De bijgewerkte PowerShell-extensie bevat:

  • Nieuwe ISE-compatibiliteitsmodus
  • PSReadLine in de geïntegreerde console, inclusief syntaxismarkering, bewerking met meerdere regels en zoeken terug
  • Stabiliteits- en prestatieverbeteringen
  • Nieuwe CodeLens-integratie
  • Verbeterde pad automatisch aanvullen

Als u de overgang naar Visual Studio Code eenvoudiger wilt maken, gebruikt u de functie ISE-modus inschakelen die beschikbaar is in het opdrachtenpalet. Met deze functie wordt VSCode overgeschakeld naar een INDELING in ISE-stijl. De indeling ise-stijl biedt u alle nieuwe functies en mogelijkheden van PowerShell in een vertrouwde gebruikerservaring.

Als u wilt overschakelen naar de nieuwe ISE-indeling, drukt u op Ctrl+Shift+P om het opdrachtenpalet te openen, typt PowerShell en selecteert u PowerShell: ISE-modus inschakelen.

Als u de indeling wilt instellen op de oorspronkelijke indeling, opent u het opdrachtenpalet en selecteert u PowerShell: ISE-modus uitschakelen (terugzetten naar standaardinstellingen).

Zie De ISE-ervaring repliceren in Visual Studio Code voor meer informatie over het aanpassen van de VSCode-indeling naar ISE

Notitie

Er zijn geen plannen om de ISE bij te werken met nieuwe functies. In de nieuwste versies van Windows 10 of Windows Server 2019 en hoger is de ISE nu een door de gebruiker verwijderbare functie. Er zijn geen plannen om de ISE definitief te verwijderen. Het PowerShell-team en de partners zijn gericht op het verbeteren van de scriptervaring in de PowerShell-extensie voor Visual Studio Code.

Volgende stappen

Bewapend met de kennis om effectief te migreren, installeer nu PowerShell 7 !