Wat is er nieuw in PowerShell 7.0?

PowerShell 7.0 is een open-source, platformoverschrijdende versie (Windows, macOS en Linux) van PowerShell, gebouwd voor het beheren van heterogene omgevingen en hybride clouds.

In deze release introduceren we een aantal nieuwe functies, waaronder:

  • Parallellisatie van pijplijnen met ForEach-Object -Parallel
  • Nieuwe operators:
    • Ternaire operator: a ? b : c
    • Operators van de pijplijnketen: || en &&
    • Null-voorwaardelijke operators: ?? en ??=
  • Een vereenvoudigde en dynamische foutweergave en Get-Error cmdlet voor eenvoudiger onderzoek van fouten
  • Een compatibiliteitslaag waarmee gebruikers modules kunnen importeren in een impliciete Windows PowerShell sessie
  • Automatische meldingen voor nieuwe versie
  • De mogelijkheid om DSC-resources rechtstreeks vanuit PowerShell 7 aan te roepen (experimenteel)

Zie de wijzigingslogboeken voor een volledige lijst met functies en oplossingen.

Waar kan ik PowerShell installeren?

PowerShell 7 ondersteunt momenteel de volgende besturingssystemen op x64, waaronder:

  • Windows 8.1 en 10
  • Windows Server 2012, 2012 R2, 2016 en 2019
  • macOS 10.13+
  • Red Hat Enterprise Linux (RHEL) / CentOS 7
  • Fedora 30+
  • Debian 9
  • Ubuntu LTS 16.04+
  • Alpine Linux 3.8+

Daarnaast ondersteunt PowerShell 7.0 ARM32- en ARM64-varianten van Debian, Ubuntu en ARM64 Alpine Linux.

Controleer de installatie-instructies voor het besturingssysteem van uw voorkeur Windows, macOS of Linux.

Hoewel dit niet officieel wordt ondersteund, biedt de community ook pakketten voor Arch en Kali Linux.

Notitie

Debian 10 en CentOS 8 bieden momenteel geen ondersteuning voor externe communicatie met WinRM. Zie Externe toegang van PowerShell via SSH voor meer informatie over het instellen van externe communicatie op basis van SSH.

Zie de PowerShell-ondersteuningslevenscyclus voor meer actuele informatie over ondersteunde besturingssystemen en de levenscyclus van ondersteuning.

PowerShell 7 uitvoeren

PowerShell 7 wordt afzonderlijk van Windows PowerShell geïnstalleerd in een map. Hierdoor kunt u PowerShell 7 naast Windows PowerShell 5.1 uitvoeren. Voor PowerShell 6.x is PowerShell 7 een in-place upgrade waarmee PowerShell 6.x wordt verwijderd.

  • PowerShell 7 is geïnstalleerd in %programfiles%\PowerShell\7
  • De %programfiles%\PowerShell\7 map wordt toegevoegd aan $env:PATH

Het PowerShell 7-installatiepakket voert een upgrade uit van eerdere versies van PowerShell 6.x:

  • PowerShell 6.x in Windows: %programfiles%\PowerShell\6 wordt vervangen door %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 wordt vervangen door /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 wordt vervangen door /usr/local/microsoft/powershell/7

Notitie

In Windows PowerShell heet powershell.exehet uitvoerbare bestand om PowerShell te starten. In versie 6 en hoger wordt de naam van het uitvoerbare bestand gewijzigd om ondersteuning te bieden voor uitvoering naast elkaar. De nieuwe uitvoerbare naam voor het starten van PowerShell 7 is pwsh.exe. Preview-builds blijven in-place in pwsh-preview plaats van pwsh in de map met 7 previews.

Verbeterde achterwaartse compatibiliteit met Windows PowerShell

PowerShell 7.0 markeert een verplaatsing naar .NET Core 3.1, waardoor er aanzienlijk meer achterwaartse compatibiliteit met bestaande Windows PowerShell modules mogelijk is. Dit omvat veel modules in Windows waarvoor GUI-functionaliteit zoals Out-GridView en Show-Commandis vereist, evenals veel rolbeheermodules die worden geleverd als onderdeel van Windows.

Voor Windows wordt een nieuwe switchparameter UseWindowsPowerShell toegevoegd aan Import-Module. Met deze schakeloptie maakt u een proxymodule in PowerShell 7 die gebruikmaakt van een lokaal Windows PowerShell-proces om impliciet cmdlets in die module uit te voeren. Voor meer informatie over Import-Module.

Zie de modulecompatibiliteitstabel voor meer informatie over welke Microsoft-modules werken met PowerShell 7.0.

Parallelle uitvoering toegevoegd aan ForEach-Object

De ForEach-Object cmdlet, waarmee items in een verzameling worden herhaald, heeft nu ingebouwde parallelle uitvoering met de nieuwe parameter Parallel .

Standaard gebruiken parallelle scriptblokken de huidige werkmap van de aanroeper waarmee de parallelle taken zijn gestart.

In dit voorbeeld worden 50.000 logboekvermeldingen opgehaald uit vijf systeemlogboeken op een lokale Windows-computer:

$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'

$logEntries = $logNames | ForEach-Object -Parallel {
    Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5

$logEntries.Count

50000

De parameter Parallel geeft het scriptblok op dat parallel wordt uitgevoerd voor elke naam van het invoerlogboek.

De nieuwe parameter ThrottleLimit beperkt het aantal scriptblokken dat op een bepaald moment parallel wordt uitgevoerd. De standaardwaarde is 5.

Gebruik de $_ variabele om het huidige invoerobject in het scriptblok weer te geven. Gebruik het $using: bereik om variabeleverwijzingen door te geven aan het actieve scriptblok.

Voor meer informatie over ForEach-Object.

Ternaire operator

PowerShell 7.0 introduceert een ternaire operator die zich gedraagt als een vereenvoudigde if-else instructie. De ternaire operator van PowerShell is nauw gemodelleerd op de syntaxis van de C#-ternaire operator:

<condition> ? <if-true> : <if-false>

De condition-expression wordt altijd geëvalueerd en het resultaat wordt geconverteerd naar een Booleaanse waarde om te bepalen welke vertakking vervolgens wordt geëvalueerd:

  • De <if-true> expressie wordt uitgevoerd als de <condition> expressie waar is
  • De <if-false> expressie wordt uitgevoerd als de <condition> expressie false is

Bijvoorbeeld:

$message = (Test-Path $path) ? "Path exists" : "Path not found"

Als het pad in dit voorbeeld bestaat, wordt Pad bestaat weergegeven. Als het pad niet bestaat, wordt Pad niet gevonden weergegeven.

Voor meer informatie over If.

Operators voor pijplijnketens

PowerShell 7 implementeert de && operators en || om pijplijnen voorwaardelijk te koppelen. Deze operators staan in PowerShell bekend als 'pijplijnketenoperators', en zijn vergelijkbaar met AND- en OR-lijsten in shells zoals bash en zsh, evenals symbolen voor voorwaardelijke verwerking in de Windows-opdrachtshell (cmd.exe).

De && operator voert de rechterpijplijn uit, als de linkerpijplijn is geslaagd. Omgekeerd voert de || operator de rechterpijplijn uit als de linkerpijplijn is mislukt.

Notitie

Deze operators gebruiken de $? variabelen en $LASTEXITCODE om te bepalen of een pijplijn is mislukt. Hierdoor kunt u ze gebruiken met systeemeigen opdrachten en niet alleen met cmdlets of functies.

Hier slaagt de eerste opdracht en wordt de tweede opdracht uitgevoerd:

Write-Output 'First' && Write-Output 'Second'
First
Second

Hier mislukt de eerste opdracht, de tweede wordt niet uitgevoerd:

Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad

Hier slaagt de eerste opdracht, de tweede opdracht wordt niet uitgevoerd:

Write-Output 'First' || Write-Output 'Second'
First

Hier mislukt de eerste opdracht, dus de tweede opdracht wordt uitgevoerd:

Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second

Voor meer informatie over operators van pijplijnketens.

Null-coalescing, toewijzing en voorwaardelijke operators

PowerShell 7 bevat de operator Null-coalescing ??, voorwaardelijke toewijzing ??=van Null en de voorwaardelijke toegangsoperators voor Null-leden ?. en ?[].

Null-coalescing Operator ??

De operator ?? null-coalescing retourneert de waarde van de linkeroperand als deze niet null is. Anders wordt de rechteroperand geëvalueerd en wordt het resultaat geretourneerd. De ?? operator evalueert de rechteroperand niet als de linkeroperand niet null is.

$x = $null
$x ?? 100
100

In het volgende voorbeeld wordt de operand aan de rechterkant niet geëvalueerd:

[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020

Voorwaardelijke toewijzingsoperator null ?? =

De operator ??= voor voorwaardelijke toewijzing null wijst de waarde van de rechteroperand alleen toe aan de linkeroperand als de linkeroperand null is. De ??= operator evalueert de rechteroperand niet als de linkeroperand niet null is.

$x = $null
$x ??= 100
$x
100

In het volgende voorbeeld wordt de rechteroperand niet geëvalueerd:

[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020

Null-operators voor voorwaardelijke lidtoegang ?. En? [] (Experimenteel)

Notitie

Dit is een experimentele functie met de naam PSNullConditionalOperators. Zie Experimentele functies gebruiken voor meer informatie.

Een voorwaardelijke operator null staat ledentoegang, ?.of elementtoegang, ?[], alleen toe tot de operand als die operand niet-null is; anders wordt null geretourneerd.

Notitie

Aangezien PowerShell deel kan ? uitmaken van de naam van de variabele, is formele specificatie van de variabelenaam vereist voor het gebruik van deze operators. Het is dus vereist om te gebruiken {} rond de namen van variabelen, zoals ${a} of wanneer ? deel uitmaakt van de naam ${a?}van de variabele .

In het volgende voorbeeld wordt de waarde van de eigenschap Status van het lid geretourneerd:

$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped

In het volgende voorbeeld wordt null geretourneerd, zonder te proberen toegang te krijgen tot de status van de lidnaam:

$service = $Null
${Service}?.status

Op dezelfde manier wordt met behulp ?[]van de waarde van het element geretourneerd:

$a = 1..10
${a}?[0]
1

En wanneer de operand null is, wordt het element niet geopend en wordt null geretourneerd:

$a = $null
${a}?[0]

Voor meer informatie About_Operators.

Nieuwe weergave ConciseView en cmdlet-Get-Error

PowerShell 7.0 verbetert de weergave van foutberichten om de leesbaarheid van interactieve en scriptfouten te verbeteren met een nieuwe standaardweergave ConciseView. De weergaven kunnen door de gebruiker worden geselecteerd via de voorkeursvariabele $ErrorView.

Als met ConciseView een fout niet afkomstig is van een script- of parserfout, is het een foutbericht met één regel:

Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist

Als de fout optreedt tijdens het uitvoeren van het script of een parseringsfout is, retourneert PowerShell een foutbericht met meerdere regels dat de fout bevat, een aanwijzer en een foutbericht dat aangeeft waar de fout zich op die regel bevindt. Als de terminal geen ANSI-escapereeksen (VT100) ondersteunt, worden de kleuren niet weergegeven.

Fout bij weergave van een script

De standaardweergave in PowerShell 7 is ConciseView. De vorige standaardweergave was NormalView en u kunt dit selecteren door de voorkeursvariabele $ErrorViewin te stellen.

$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView

Notitie

Er wordt een nieuwe eigenschap ErrorAccentColor toegevoegd aan $Host.PrivateData ter ondersteuning van het wijzigen van de accentkleur van het foutbericht.

Een nieuwe cmdlet Get-Error biedt indien gewenst een volledige gedetailleerde weergave van de volledig gekwalificeerde fout. Standaard geeft de cmdlet de volledige details weer, inclusief interne uitzonderingen, van de laatste fout die is opgetreden.

Weergeven vanuit Get-Error

De Get-Error cmdlet ondersteunt invoer vanuit de pijplijn met behulp van de ingebouwde variabele $Error. Get-Error geeft alle doorgesluisde fouten weer.

$Error | Get-Error

De Get-Error cmdlet ondersteunt de nieuwste parameter, zodat u kunt opgeven hoeveel fouten van de huidige sessie u wilt weergeven.

Get-Error -Newest 3 # Displays the lst three errors that occurred in the session

Voor meer informatie over Get-Error.

Melding over nieuwe versie

PowerShell 7 maakt gebruik van updatemeldingen om gebruikers te waarschuwen over het bestaan van updates voor PowerShell. Een keer per dag voert PowerShell een query uit op een onlineservice om te bepalen of er een nieuwere versie beschikbaar is.

Notitie

De updatecontrole vindt plaats tijdens de eerste sessie in een bepaalde periode van 24 uur. Om prestatieredenen wordt de updatecontrole 3 seconden na het begin van de sessie gestart. De melding wordt alleen weergegeven aan het begin van volgende sessies.

Standaard abonneert PowerShell zich op een van de twee verschillende meldingskanalen, afhankelijk van de versie/vertakking. Ondersteund, algemeen beschikbare (GA) versies van PowerShell retourneren alleen meldingen voor bijgewerkte GA-releases. Preview- en Release Candidate-releases (RC) melden updates voor preview-, RC- en GA-releases.

Het gedrag van updatemeldingen kan worden gewijzigd met behulp van de $Env:POWERSHELL_UPDATECHECK omgevingsvariabele. De volgende waarden worden ondersteund:

  • De standaardwaarde is hetzelfde als niet definiëren $Env:POWERSHELL_UPDATECHECK
    • GA-releases melden updates voor GA-releases
    • Preview-/RC-releases melden updates voor ga- en preview-releases
  • Met Uit wordt de updatemeldingsfunctie uitgeschakeld
  • LTS geeft alleen meldingen over updates voor langlopende servicereleases (LTS)

Notitie

De omgevingsvariabele $Env:POWERSHELL_UPDATECHECK bestaat pas wanneer deze voor de eerste keer is ingesteld.

De versiemelding instellen voor LTS alleen releases:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

De versiemelding instellen op het Default gedrag:

$Env:POWERSHELL_UPDATECHECK = 'Default'

Voor meer informatie Over updatemeldingen.

Ondersteuning voor nieuwe DSC-resources met Invoke-DSCResource (experimenteel)

Notitie

Dit is een experimentele functie met de naam PSDesiredStateConfiguration.InvokeDscResource. Zie Experimentele functies gebruiken voor meer informatie.

De Invoke-DscResource cmdlet voert een methode uit van een opgegeven PowerShell Desired State Configuration (DSC)-resource.

Met deze cmdlet wordt een DSC-resource rechtstreeks aangeroepen, zonder een configuratiedocument te maken. Met deze cmdlet kunnen configuratiebeheerproducten Windows of Linux beheren met behulp van DSC-resources. Deze cmdlet maakt ook foutopsporing van resources mogelijk wanneer de DSC-engine wordt uitgevoerd met foutopsporing ingeschakeld.

Met deze opdracht wordt de methode Set van een resource met de naam WindowsProcess aangeroepen en worden de verplichte eigenschappen Pad en Argumenten geboden om het opgegeven Windows-proces te starten.

Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
  Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
  Arguments = ''
}

Voor meer informatie over Invoke-DSCResource.

Belangrijke wijzigingen en verbeteringen

Wijzigingen die fouten veroorzaken

  • Updatemeldingen ondersteunen LTS en standaardkanalen (#11132)
  • Werk Test-Connection bij om meer te werken zoals in Windows PowerShell (#10697) (Bedankt@vexx32!)
  • $behouden? voor ParenExpression, SubExpression en MatrixExpression (#11040)
  • Werkmap instellen op huidige map in Start-Job (#10920) (bedankt @iSazonov!)
  • Zorg ervoor dat $PSCulture cultuurwijzigingen in de sessie consistent weergeeft (#10138) (bedankt @iSazonov!)

Engine Updates en oplossingen

  • Verbeteringen in onderbrekingspunt-API's voor externe scenario's (#11312)
  • Oplossing voor het lekken van de PowerShell-klassedefinitie naar een andere runspace (#11273)
  • Een regressie in de opmaak herstellen die wordt veroorzaakt door de primitieve FirstOrDefault die is toegevoegd in 7.0.0-Preview1 (#11258)
  • Aanvullende Microsoft-modules om bij te houden in PS7-telemetrie (#10751)
  • Goedgekeurde functies niet-experimenteel maken (#11303)
  • Werk ConciseView bij om TargetObject te gebruiken, indien van toepassing (#11075)
  • Oplossing voor NullReferenceException in de openbare methoden CompletionCompleters (#11274)
  • Statuscontrole van appartementthreads op niet-Windows-platforms oplossen (#11301)
  • Instelling PSModulePath bijwerken om de proces- en machineomgevingsvariabelen samen te brengen (#11276)
  • .NET Core verhogen naar 3.1.0 (#11260)
  • Detectie van $PSHOME vóór $env:PATH (#11141) opgelost
  • Pwsh toestaan om $env:PSModulePath over te nemen en powershell.exe in te schakelen om correct te starten (#11057)
  • Overstappen op .NET Core 3.1 preview 1 (#10798)
  • Reparsetagcontroles herstructureren in bestandssysteemprovider (#10431) (bedankt @iSazonov!)
  • Vervang CR en nieuwe regel door een 0x23CE teken in scriptlogboekregistratie (#10616)
  • Los een resourcelek op door de registratie van de gebeurtenis-handler bij AppDomain.CurrentDomain.ProcessExit (#10626) ongedaan te maken
  • Voeg ondersteuning toe aan ActionPreference.Break om in te breken in het foutopsporingsprogramma wanneer foutopsporings-, fout-, informatie-, voortgangs-, uitgebreide- of waarschuwingsberichten worden gegenereerd (#8205) (bedankt @KirkMunro!)
  • Schakel het starten van configuratiescherm-invoegtoepassingen in PowerShell in zonder .CPL extensie op te geven. (#9828)
  • Ondersteuning van negatieve getallen in -split operator (#8960) (bedankt @ece-jacob-scott!)

Algemene cmdlet-Updates en oplossingen

  • Oplossing voor probleem met Raspbian voor het instellen van de datum van bestandswijzigingen in de experimentele unixstat-functie (#11313)
  • -AsPlainText toevoegen aan ConvertFrom-SecureString (#11142)
  • WindowsPS-versiecontrole toegevoegd voor WinCompat (#11148)
  • Foutrapportage in sommige WinCompat-scenario's oplossen (#11259)
  • Systeemeigen binaire resolver toevoegen (#11032) (bedankt @iSazonov!)
  • Berekening van tekenbreedte bijwerken om CJK-tekens correct te respecteren (#11262)
  • Unblock-File toevoegen voor macOS (#11137)
  • Regressie herstellen in Get-PSCallStack (#11210) (bedankt @iSazonov!)
  • Automatisch laden van de module ScheduledJob verwijderen bij gebruik van taak-cmdlets (#11194)
  • OutputType toevoegen aan Get-Error cmdlet en oorspronkelijke typenamen behouden (#10856)
  • Null-verwijzing herstellen in eigenschap SupportsVirtualTerminal (#11105)
  • Limiet inchecken toevoegen in Get-WinEvent (#10648) (bedankt @iSazonov!)
  • Herstel de opdrachtruntime zodat StopUpstreamCommandsException niet wordt ingevuld in -ErrorVariable (#10840)
  • Stel de uitvoercodering in op [Console]:OutputEncoding voor systeemeigen opdrachten (#10824)
  • Ondersteuning voor codeblokken met meerdere regels in voorbeelden (#10776) (bedankt @Greg-Smulko!)
  • Parameter Cultuur toevoegen aan Select-String cmdlet (#10943) (bedankt @iSazonov!)
  • Herstel Start-Job werkmappad met afsluitende backslash (#11041)
  • ConvertFrom-Json: Verzamelingen standaard uitpakken (#10861) (bedankt @danstur!)
  • Hoofdlettergevoelige hashtable gebruiken voor Group-Object cmdlet met -CaseSensitive en -AsHashtable switches (#11030) (bedankt @vexx32!)
  • Uitzondering afhandelen als het opsommen van bestanden mislukt bij het herbouwen van het pad om de juiste hoofdletters te hebben (#11014)
  • Fix ConciseView om activiteit weer te geven in plaats van myCommand (#11007)
  • Toestaan dat web-cmdlets HTTP-foutstatussen negeren (#10466) (bedankt @vdamewood!)
  • Leidingen van meer dan één CommandInfo naar Get-Command opgelost (#10929)
  • Add back Get-Counter cmdlet for Windows (#10933)
  • Zorg dat ConvertTo-Json [AutomationNull]::Value en [NullString]::Value behandelen als $null (#10957)
  • Haakjes verwijderen uit ipv6-adres voor externe SSH-communicatie (#10968)
  • Fix crash if command sent to pwsh is just whitespace (#10977)
  • Platformoverschrijdende Get-Clipboard en Set-Clipboard toegevoegd (#10340)
  • Oplossing voor het instellen van het oorspronkelijke pad van het bestandssysteemobject om geen extra slash te hebben (#10959)
  • Ondersteunings $null voor ConvertTo-Json (#10947)
  • Opdracht Out-Printer toevoegen in Windows (#10906)
  • Fix Start-Job -WorkingDirectory with whitespace (#10951)
  • Standaardwaarde retourneren bij het ophalen van null voor een instelling in PSConfiguration.cs (#10963) (bedankt @iSazonov!)
  • IO-uitzondering verwerken als niet-beëindigend (#10950)
  • Voeg GraphicalHost-assembly toe om Out-GridView, Show-Command en Get-Help -ShowWindow (#10899) in te schakelen
  • Take ComputerName via pijplijn in Get-HotFix (#10852) (bedankt @kvprasoon!)
  • Tabvoltooiing voor parameters herstellen, zodat algemene parameters als beschikbaar worden weergegeven (#10850)
  • Herstel GetCorrectCasedPath() om eerst te controleren of er systeembestanden worden geretourneerd voordat u First() (#10930) aanroept
  • Werkmap instellen op huidige map in Start-Job (#10920) (bedankt @iSazonov!)
  • Wijzig TabExpansion2 om -CursorColumn niet te vereisen en te behandelen als $InputScript.Length (#10849)
  • Handle case waarbij host mogelijk geen rijen of kolommen van het scherm retourneert (#10938)
  • Probleem opgelost met het gebruik van accentkleuren voor hosts die deze niet ondersteunen (#10937)
  • Opdracht Update-List terug toevoegen (#10922)
  • FWLink-id voor Clear-RecycleBin (#10925) bijwerken
  • Sla tijdens het voltooien van tabbladen het bestand over als u bestandskenmerken niet kunt lezen (#10910)
  • Back-Clear-RecycleBin voor Windows toevoegen (#10909)
  • Voeg toe $env:__SuppressAnsiEscapeSequences om te bepalen of de VT-escapereeks in de uitvoer moet worden weergegeven (#10814)
  • Parameter -NoEmphasize toevoegen om Select-String uitvoer in te kleuren (#8963) (bedankt @derek-xia!)
  • Cmdlet Get-HotFix toevoegen (#10740)
  • Maak Add-Type bruikbaar in toepassingen die PowerShell hosten (#10587)
  • Gebruik een effectievere evaluatievolgorde in LanguagePrimitives.IsNullLike() (#10781) (bedankt @vexx32!)
  • De verwerking van door gemengde verzameling doorgesluisde invoer en doorgesluisde invoerstromen in Format-Hex (#8674) verbeteren (bedankt) @vexx32!)
  • Typeconversie gebruiken in SSHConnection-hashtabellen wanneer de waarde niet overeenkomt met het verwachte type (#10720) (bedankt @SeeminglyScience!)
  • Probleem opgelost Get-Content -ReadCount 0-gedrag wanneer -TotalCount is ingesteld (#10749) (bedankt @eugenesmlv!)
  • Foutbericht toegang geweigerd in Get-WinEvent (#10639) (bedankt @iSazonov!)
  • Tabvoltooiing inschakelen voor variabeletoewijzing die enum of type beperkt is (#10646)
  • Verwijder ongebruikte eigenschap SourceLength voor externe communicatie die opmaakproblemen veroorzaakt (#10765)
  • Parameter -Delimiter toevoegen aan ConvertFrom-StringData (#10665) (bedankt @steviecoaster!)
  • Positionele parameter toevoegen voor ScriptBlock bij gebruik van Invoke-Command met SSH (#10721) (bedankt @machgo!)
  • Informatie over regelcontext weergeven als meerdere regels maar geen scriptnaam voor ConciseView (#10746)
  • Ondersteuning toevoegen voor \wsl$\ paths to file system provider (#10674)
  • Voeg de ontbrekende tokentekst voor TokenKind.QuestionMark toe in parser (#10706)
  • Stel de huidige werkmap van elke ForEach-Object -Parallel uitgevoerd script in op dezelfde locatie als het aanroepende script. (#10672)
  • Vervang api-ms-win-core-file-l1-2-2.dll door Kernell32.dll voor FindFirstStreamW en FindNextStreamW API's (#10680) (bedankt @iSazonov!)
  • Help-opmaakscript aanpassen om toleranter te zijn voor StrictMode (#10563)
  • Parameter -SecurityDescriptorSDDL toevoegen aan New-Service (#10483) (bedankt @kvprasoon!)
  • Informatieve uitvoer verwijderen, pinggebruik samenvoegen in Test-Connection (#10478) (bedankt @vexx32!)
  • Speciale reparsepunten lezen zonder ze te openen (#10662) (bedankt @iSazonov!)
  • Directe Clear-Host uitvoer naar terminal (#10681) (bedankt @iSazonov!)
  • Nieuwe regel toevoegen voor groeperen met Format-Table en -eigenschap (#10653)
  • Verwijder [ValidateNotNullOrEmpty] uit -InputObject op Get-Random om lege tekenreeks toe te staan (#10644)
  • Maak suggestie systeem tekenreeks afstand algoritme hoofdlettergevoelig (#10549) (bedankt @iSazonov!)
  • Null-verwijzingsuitzondering in ForEach-Object -Parallelle invoerverwerking (#10577) oplossen
  • PowerShell-groepsbeleidsdefinities toevoegen (#10468)
  • Werk de consolehost bij ter ondersteuning van XTPUSHSGR/XTPOPSGR VT-besturingsreeksen die worden gebruikt in composability-scenario's. (#10208)
  • Parameter WorkingDirectory toevoegen aan Start-Job (#10324) (bedankt @davinci26!)
  • Verwijder de gebeurtenis-handler waardoor onderbrekingspuntwijzigingen per ongeluk worden gerepliceerd naar het foutopsporingsprogramma van de hostrunspace (#10503) (bedankt @KirkMunro!)
  • Vervang api-ms-win-core-job-12-1-0.dll door Kernell32.dll in Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (bedankt @iSazonov!)
  • Onjuiste uitvoer voor New-Service in variabeletoewijzing en -OutVariable (#10444) (Bedankt) @kvprasoon!)
  • Algemene hulpprogrammaproblemen oplossen met betrekking tot afsluitcode, opdrachtregelparameters en pad met spaties (#10461)
  • Recursie in OneDrive herstellen: wijzig FindFirstFileEx() om het SafeFindHandle-type te gebruiken (#10405)
  • Automatisch laden van PSReadLine in Windows overslaan als de NVDA-schermlezer actief is (#10385)
  • Ingebouwde PowerShell-moduleversies verhogen naar 7.0.0.0 (#10356)
  • Voeg een fout toe in Add-Type als er al een type met dezelfde naam bestaat (#9609) (bedankt @iSazonov!)

Prestaties

  • Vermijd het gebruik van sluiting in Parser.SaveError (#11006)
  • De cache verbeteren bij het maken van nieuwe Regex-exemplaren (#10657) (bedankt @iSazonov!)
  • De verwerking van de ingebouwde PowerShell-typegegevens van types.ps1xml, typesV3.ps1xml en GetEvent.types.ps1xml (#10898) verbeteren
  • Werk PSConfiguration.ReadValueFromFile bij om het sneller en efficiënter te maken (#10839)
  • Kleine prestatieverbeteringen toevoegen voor runspace-initialisatie (#10569) (bedankt @iSazonov!)
  • Maak ForEach-Object sneller voor de veelgebruikte scenario's (#10454) en los ForEach-Object -Parallel prestatieprobleem met veel runspaces op (#10455)

Code opschonen

  • Opmerking en elementtekst wijzigen om te voldoen aan Microsoft-standaarden (#11304)
  • Problemen met opschoningsstijlen in Compiler.cs (#10368) (bedankt @iSazonov!)
  • Verwijder het ongebruikte typeconversieprogramma voor CommaDelimitedStringCollection (#11000) (bedankt @iSazonov!)
  • Opschoningsstijl in InitialSessionState.cs (#10865) (bedankt @iSazonov!)
  • Code opschonen voor PSSession-klasse (#11001)
  • Verwijder de niet-werkende functie 'run Update-Help from Get-Help when Get-Help first time runs for the first time' (#10974)
  • Stijlproblemen oplossen (#10998) (bedankt @iSazonov!)
  • Opschoning: gebruik de ingebouwde typealias (#10882) (bedankt @iSazonov!)
  • Verwijder de ongebruikte instellingssleutel ConsolePrompting en voorkom onnodige tekenreeksen bij het uitvoeren van query's op executionPolicy (#10985)
  • Controle van updatemeldingen uitschakelen voor dagelijkse builds (#10903) (bedankt @bergmeister!)
  • Foutopsporings-API herstellen die verloren is gegaan in #10338 (#10808)
  • Naslaginformatie voor WorkflowJobSourceAdapter verwijderen die niet meer wordt gebruikt (#10326) (bedankt @KirkMunro!)
  • COM-interfaces in jumplistcode opschonen door preserveSig-kenmerken (#9899) te herstellen (bedankt) @weltkante!)
  • Voeg een opmerking toe waarin wordt beschreven waarom -ia niet de alias is voor de algemene parameter -InformationAction (#10703) (bedankt @KirkMunro!)
  • Wijzig de naam van InvokeCommandCmdlet.cs in InvokeExpressionCommand.cs (#10659) (bedankt @kilasuit!)
  • Secundaire codeopschoonacties toevoegen met betrekking tot updatemeldingen (#10698)
  • Afgeschafte werkstroomlogica verwijderen uit de installatiescripts voor externe communicatie (#10320) (bedankt @KirkMunro!)
  • Help-indeling bijwerken om de juiste case te gebruiken (#10678) (bedankt @tnieto88!)
  • Problemen met CodeFactor-stijl opschonen die de afgelopen maand worden doorgevoerd (#10591) (bedankt @iSazonov!)
  • Typfout opgelost in de beschrijving van de experimentele functie PSTernaryOperator (#10586) (bedankt @bergmeister!)
  • Converteer de opsommingswaarde ActionPreference.Suspend naar een niet-ondersteunde, gereserveerde status en verwijder de beperking voor het gebruik van ActionPreference.Ignore in voorkeursvariabelen (#10317) (Bedankt @KirkMunro!)
  • Vervang ArrayList door List<T> om beter leesbare en betrouwbare code te krijgen zonder de functionaliteit te wijzigen (#10333) (bedankt @iSazonov!)
  • Codestijlcorrecties aanbrengen in TestConnectionCommand (#10439) (bedankt @vexx32!)
  • Opschonen AutomationEngine and remove extra SetSessionStateDrive method call (#10416) (Thanks @iSazonov!)
  • Wijzig de naam van standaardParameterSetName terug in Scheidingsteken voor ConvertTo-Csv en ConvertFrom-Csv (#10425)

Hulpprogramma's

  • Standaardinstelling toevoegen voor de eigenschap SDKToUse, zodat deze wordt gebouwd in VS (#11085)
  • Install-Powershell.ps1: Parameter toevoegen om MSI-installatie te gebruiken (#10921) (bedankt @MJECloud!)
  • Basisvoorbeelden toevoegen voor install-powershell.ps1 (#10914) (bedankt @kilasuit!)
  • Maak Install-PowerShellRemoting.ps1 lege tekenreeks in PowerShellHome-parameter (#10526) (bedankt @Orca88!)
  • Overschakelen van /etc/lsb-release naar /etc/os-release in install-powershell.sh (#10773) (Bedankt @Himura2la!)
  • Controleer pwsh.exe en pwsh in de dagelijkse versie in Windows (#10738) (bedankt @centreboard!)
  • Verwijder overbodige tik in installpsh-osx.sh (#10752)
  • Werk install-powershell.ps1 bij om te controleren op al geïnstalleerde dagelijkse build (#10489)

Testen

  • Onbetrouwbare DSC-test in behandeling maken (#11131)
  • Stringdata-test herstellen om sleutels van hashtables correct te valideren (#10810)
  • Testmodules verwijderen (#11061) (bedankt @iSazonov!)
  • Langer tijd tussen nieuwe pogingen van test-URL (#11015)
  • Werk tests bij om de testacties nauwkeurig te beschrijven. (#10928) (Bedankt @romero126!)
  • Sla de flaky test TestAppDomainProcessExitEvenHandlerNotLeaking tijdelijk over (#10827)
  • De test voor lekken van de gebeurtenis-handler stabiel maken (#10790)
  • Hoofdlettergebruik synchroniseren in CI YAML (#10767) (bedankt @RDIL!)
  • Test toevoegen voor de oplossing voor het lekken van de gebeurtenis-handler (#10768)
  • Voeg Get-ChildItem test toe (#10507) (bedankt @iSazonov!)
  • Dubbelzinnige taal vervangen voor tests van overschakeling naar parameter voor nauwkeurigheid (#10666) (bedankt @romero126!)
  • Experimentele controle toevoegen aan ForEach-Object -Parallelle tests (#10354) (bedankt @KirkMunro!)
  • Tests bijwerken voor Alpine-validatie (#10428)

Build- en pakketverbeteringen

  • Nuget-pakketondertekening voor coordinated package-build (#11316) herstellen
  • Afhankelijkheden van PowerShell Gallery en NuGet bijwerken (#11323)
  • Microsoft.ApplicationInsights verhogen van 2.11.0 naar 2.12.0 (#11305)
  • Bump Microsoft.CodeAnalysis.CSharp van 3.3.1 naar 3.4.0 (#11265)
  • Updates pakketten voor Debian 10 en 11 (#11236)
  • Schakel alleen experimentele functies in vóór RC (#11162)
  • Minimale versie van macOS bijwerken (#11163)
  • Bump NJsonSchema van 10.0.27 tot 10.0.28 (#11170)
  • Koppelingen in README.md en metadata.json bijwerken voor Preview.5 (#10854)
  • Selecteer de bestanden voor nalevingstests die eigendom zijn van PowerShell (#10837)
  • Toestaan dat het win7x86 msix-pakket wordt gebouwd. (Intern 10515)
  • Toestaan dat semantische versies worden doorgegeven aan de functie NormalizeVersion (#11087)
  • Het .NET Core-framework verhogen naar 3.1-preview.3 (#11079)
  • Bump PSReadLine van 2.0.0-beta5 naar 2.0.0-beta6 in /src/Modules (#11078)
  • Bump Newtonsoft.Json van 12.0.2 tot 12.0.3 (#11037) (#11038)
  • Debian 10-, 11- en CentOS 8-pakketten toevoegen (#11028)
  • Upload Build-Info JSON-bestand met het veld ReleaseDatum (#10986)
  • .NET Core Framework verhogen naar 3.1-preview.2 (#10993)
  • Build van x86 MSIX-pakket inschakelen (#10934)
  • De URL van het dotnet SDK-installatiescript bijwerken in build.psm1 (#10927)
  • Bump Markdig.Signed van 0.17.1 tot 0.18.0 (#10887)
  • Bump ThreadJob van 2.0.1 naar 2.0.2 (#10886)
  • AppX Manifest en Packaging-module bijwerken om te voldoen aan de vereisten voor MS Store (#10878)
  • Updatepakketverwijzing voor PowerShell SDK naar preview.5 (intern 10295)
  • ThirdPartyNotices.txt (#10834) bijwerken
  • Microsoft.PowerShell.Native verhogen naar 7.0.0-preview.3 (#10826)
  • Microsoft.ApplicationInsights verhogen van 2.10.0 naar 2.11.0 (#10608)
  • Bump NJsonSchema van 10.0.24 tot 10.0.27 (#10756)
  • MacPorts-ondersteuning toevoegen aan het buildsysteem (#10736) (bedankt @Lucius-Q-User!)
  • Bump PackageManagement van 1.4.4 tot 1.4.5 (#10728)
  • Bump NJsonSchema van 10.0.23 tot 10.0.24 (#10635)
  • Omgevingsvariabele toevoegen om client-/servertelemetrie te onderscheiden in MSI (#10612)
  • Bump PSDesiredStateConfiguration van 2.0.3 naar 2.0.4 (#10603)
  • Microsoft.CodeAnalysis.CSharp verhogen van 3.2.1 naar 3.3.1 (#10607)
  • Update naar .Net Core 3.0 RTM (#10604) (bedankt @bergmeister!)
  • MSIX-verpakking bijwerken zodat de versie naar windows store-vereisten (#10588) wordt uitgevoerd
  • Bump PowerShellGet-versie van 2.2 naar 2.2.1 (#10382)
  • Bump PackageManagement-versie van 1.4.3 tot 1.4.4 (#10383)
  • README.md en metadata.json bijwerken voor 7.0.0-preview.4 (intern 10011)
  • Upgrade van .Net Core 3.0-versie van Preview 9 naar RC1 (#10552) (bedankt @bergmeister!)
  • ExperimentalFeature-lijstgeneratie herstellen (intern 9996)
  • Bump PSReadLine-versie van 2.0.0-beta4 tot 2.0.0-beta5 (#10536)
  • Release-buildscript herstellen om releasetag in te stellen
  • Versie van Microsoft.PowerShell.Native bijwerken naar 7.0.0-preview.2 (#10519)
  • Upgraden naar Netcoreapp3.0 preview9 (#10484) (bedankt @bergmeister!)
  • Zorg ervoor dat de dagelijkse gecoördineerde build weet dat het een dagelijkse build is (#10464)
  • De gecombineerde pakketbuild bijwerken om de dagelijkse builds uit te brengen (#10449)
  • Appveyor-verwijzing verwijderen (#10445) (bedankt @RDIL!)
  • Bump NJsonSchema-versie van 10.0.22 tot 10.0.23 (#10421)
  • Verwijder de linux-x64-buildmap omdat sommige afhankelijkheden voor Alpine dit nodig hebben (#10407)

Documentatie en Help-inhoud

  • Wijzigingslogboeken herstructureren in één logboek per release (#11165)
  • Online Help-documenten voor FWLinks voor PowerShell 7 oplossen (#11071)
  • Update CONTRIBUTING.md (#11096) (bedankt @mklement0!)
  • Installatiedocumentkoppelingen in README.md (#11083) herstellen
  • Hiermee voegt u voorbeelden toe aan install-powershell.ps1 script (#11024) (bedankt @kilasuit!)
  • Oplossing voor Select-String nadruk en Import-DscResource in CHANGELOG.md (#10890)
  • De verouderde koppeling verwijderen uit powershell-beginners-guide.md (#10926)
  • Stabiele en onderhoudswijzigingslogboeken samenvoegen (#10527)
  • Gebruikte .NET-versie in builddocumenten bijwerken (#10775) (bedankt @Greg-Smulko!)
  • Koppelingen van MSDN naar Microsoft Learn vervangen in powershell-beginners-guide.md (#10778) (bedankt @iSazonov!)
  • Verbroken DSC-overzichtskoppeling herstellen (#10702)
  • Werk Support_Question.md bij om een koppeling naar Stack Overflow te maken als een andere communityresource (#10638) (bedankt @mklement0!)
  • Processorarchitectuur toevoegen aan distributieaanvraagsjabloon (#10661)
  • Nieuw PowerShell MoL-boek toevoegen om PowerShell-documenten te leren (#10602)
  • Update README.md en metagegevens voor v6.1.6- en v6.2.3-versies (#10523)
  • Een typefout in README.md (#10465) oplossen (bedankt) @vedhasp!)
  • Een verwijzing naar de PSKoans-module toevoegen aan de documentatie van Learning Resources (#10369) (bedankt @vexx32!)
  • README.md en metadata.json bijwerken voor 7.0.0-preview.3 (#10393)