Delen via


Wat is er nieuw in PowerShell 7.0

PowerShell 7.0 is een open-source, cross-platform (Windows, macOS en Linux) versie van PowerShell, gebouwd om heterogene omgevingen en hybride clouds te beheren.

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

  • Pipeline-parallelisatie met ForEach-Object -Parallel
  • Nieuwe operators:
    • Ternaire operator: a ? b : c
    • Pipeline chain-operators: || en &&
    • Nul conditionele operatoren: ?? en ??=
  • Een vereenvoudigde en dynamische foutweergave en Get-Error cmdlet voor eenvoudiger onderzoek van fouten
  • Een compatibiliteitslaag die gebruikers in staat stelt modules te importeren in een impliciete Windows PowerShell-sessie
  • Automatische meldingen voor nieuwe versies
  • De mogelijkheid om DSC-bronnen direct aan te roepen vanuit PowerShell 7 (experimenteel)

Voor een volledige lijst met functies en oplossingen, zie de wijzigingslogboeken.

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 van je favoriete besturingssysteem Windows, macOS of Linux.

Hoewel het niet officieel wordt ondersteund, heeft de community ook pakketten geleverd voor Arch en Kali Linux.

Opmerking

Debian 10 en CentOS 8 ondersteunen momenteel geen WinRM-afstandsbediening. Voor details over het instellen van SSH-gebaseerde afstandsbediening, zie PowerShell Afstanden over SSH.

Voor meer informatie over up-todatum over ondersteunde besturingssystemen en de levenscyclus van ondersteuning, zie de PowerShell Support Lifecycle.

PowerShell 7 draaien

PowerShell 7 installeert in een map die los is van Windows PowerShell. Hierdoor kun je PowerShell 7 naast Windows PowerShell 5.1 draaien. Voor PowerShell 6.x is PowerShell 7 een in-place upgrade die PowerShell 6.x verwijdert.

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

Het PowerShell 7-installerpakket verbetert eerdere versies van PowerShell 6.x:

  • PowerShell 6.x op 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

Opmerking

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 side-by-side uitvoering te ondersteunen. De nieuwe uitvoerbare naam om PowerShell 7 te starten is pwsh.exe. Preview-builds blijven aanwezig in plaats pwsh-preview van pwsh onder de 7-preview directory.

Verbeterde achterwaartse compatibiliteit met Windows PowerShell

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

Voor Windows wordt een nieuwe switchparameter UseWindowsPowerShell toegevoegd aan Import-Module. Deze switch creëert een proxymodule in PowerShell 7 die een lokaal Windows PowerShell-proces gebruikt om impliciet alle cmdlets in die module uit te voeren. Voor meer informatie over Import-Module.

Voor meer informatie over welke Microsoft-modules werken met PowerShell 7.0, zie de Module Compatibiliteitstabel.

Parallelle uitvoering voegde toe aan ForEach-Object

De ForEach-Object cmdlet, die items in een collectie iterert, heeft nu ingebouwde paralleliteit met de nieuwe Parallel-parameter .

Standaard gebruiken parallelle scriptblokken de huidige werkmap van de aanroeper die de parallelle taken startte.

Dit voorbeeld haalt 50.000 logboekvermeldingen op uit 5 systeemlogs op een lokale Windows-machine:

$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 Parallel-parameter specificeert het scriptblok dat parallel wordt uitgevoerd voor elke invoerlognaam.

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

Gebruik de variabele $_ om het huidige invoerobject in het scriptblok te representeren. Gebruik de $using: scope om variabeleverwijzingen door te geven aan het lopende 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 vanuit de C# ternaire operatorsyntaxis:

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

De conditie-expressie wordt altijd geëvalueerd en het resultaat wordt omgezet naar een Booleaan om te bepalen welke tak als volgende 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 onwaar is

Voorbeeld:

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

In dit voorbeeld, als het pad bestaat, dan wordt Pad bestaat weergegeven. Als het pad niet bestaat, wordt Pad niet gevonden weergegeven.

Voor meer informatie over If.

Pipeline chain operators

PowerShell 7 implementeert de && en || operators om pijplijnen conditioneel te ketenen. Deze operatoren staan in PowerShell bekend als "pipeline chain operators" en lijken op AND- en OR-lijsten in shells zoals bash en zsh, evenals conditionele verwerkingssymbolen in de Windows Command Shell (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.

Opmerking

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

Hier slaagt het eerste commando en wordt het tweede commando uitgevoerd:

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

Hier faalt het eerste commando, het tweede wordt niet uitgevoerd:

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

Hier slaagt het eerste commando, het tweede commando wordt niet uitgevoerd:

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

Hier faalt het eerste commando, dus wordt het tweede commando uitgevoerd:

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

Voor meer informatie over pipeline chain operators.

Nul-coalescing, toewijzing en conditionele operatoren

PowerShell 7 bevat Null coalescing operator ??, Null conditionele toewijzing ??=, en Null conditionele lidtoegangsoperatoren ?. en ?[].

Nul-coalescing operator??

De nul-coalescing operator ?? geeft de waarde van zijn linker operand terug als deze niet nul is. Anders wordt de rechteroperand geëvalueerd en wordt het resultaat ervan geretourneerd. De ??-operator evalueert de rechteroperand niet als de linkeroperand niet-null is.

$x = $null
$x ?? 100
100

In het volgende voorbeeld wordt de rechterhand-operand niet geëvalueerd:

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

Nul conditionele toewijzingsoperator?? =

De nul-conditionele toewijzingsoperator ??= wijst de waarde van zijn rechter-operand toe aan zijn linker-operand alleen als de linker-operand naar nul evalueert. De ??=-operator evalueert de rechteroperand niet als de linkeroperand niet-null is.

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

In het volgende voorbeeld wordt de rechterhand-operand niet geëvalueerd:

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

Null voorwaardelijke lidtoegangsoperatoren?. en? [] (Experimenteel)

Opmerking

Dit is een experimentele functie genaamd PSNullConditionalOperators. Voor meer informatie, zie Gebruik van experimentele functies.

Een nul-conditionele operator staat lid-toegang, ?., of element-toegang, ?[], tot zijn operand alleen als dat operand geëvalueerd wordt naar niet-nul; anders geeft hij null terug.

Opmerking

Omdat PowerShell toestaat dat ? deel uitmaakt van de naam van de variabele, is formele specificatie van de naam van de variabele vereist voor het gebruik van deze operators. Dus het is vereist om variabelennamen te gebruiken {} zoals of wanneer ? deel uitmaakt van de variabelennaam ${a?}${a} .

In het volgende voorbeeld wordt de waarde van de lideigenschap Status teruggegeven:

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

Het volgende voorbeeld geeft null terug, zonder te proberen toegang te krijgen tot de lidnaam Status:

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

Evenzo wordt met gebruik ?[]van , de waarde van het element teruggegeven:

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

En wanneer de operand null is, wordt het element niet geraadpleegd en wordt null teruggegeven:

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

Voor meer informatie About_Operators.

Nieuwe weergave ConciseView en cmdlet Get-Error

PowerShell 7.0 verbetert de weergave van foutmeldingen om de leesbaarheid van interactieve en scriptfouten te verbeteren met een nieuwe standaardweergave, ConciseView. De weergaven zijn door de gebruiker selecteerbaar via de voorkeurvariabele $ErrorView.

Bij ConciseView, als een fout niet van een script- of parserfout komt, is het een foutmelding 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 de scriptuitvoering of een parsingfout is, geeft PowerShell een meerregelig foutmelding terug dat de fout bevat, een pointer en een foutmelding die aangeeft waar de fout in die regel staat. Als de terminal geen ANSI-kleurescape-sequenties ondersteunt (VT100), worden kleuren niet weergegeven.

Foutweergave vanuit een script

De standaardweergave in PowerShell 7 is ConciseView. De vorige standaardweergave was NormalView en je 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

Opmerking

Een nieuwe eigenschap ErrorAccentColor is toegevoegd $Host.PrivateData om het wijzigen van de accentkleur van het foutbericht te ondersteunen.

Een nieuwe cmdlet Get-Error biedt een volledig gedetailleerd overzicht van de volledig gekwalificeerde fout wanneer gewenst. Standaard toont de cmdlet de volledige details, inclusief interne uitzonderingen, van de laatste fout die is opgetreden.

Weergeven vanaf Get-Error

De Get-Error cmdlet ondersteunt invoer uit de pijplijn met behulp van de ingebouwde variabele $Error. Get-Error toont alle gepipte fouten.

$Error | Get-Error

De Get-Error cmdlet ondersteunt de Latest parameter, waarmee je kunt aangeven hoeveel fouten uit de huidige sessie je wilt weergeven.

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

Voor meer informatie over Get-Error.

Melding van nieuwe versie

PowerShell 7 gebruikt updatemeldingen om gebruikers te waarschuwen voor het bestaan van PowerShell-updates. Eenmaal per dag voert PowerShell een query uit op een onlineservice om te bepalen of er een nieuwere versie beschikbaar is.

Opmerking

De updatecontrole vindt plaats tijdens de eerste sessie binnen een bepaalde periode van 24 uur. Om prestatieredenen begint de updatecontrole 3 seconden nadat de sessie is begonnen. De melding wordt alleen getoond aan het begin van volgende sessies.

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

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

  • Standaard 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.
  • Uit schakelt de update-meldingsfunctie uit
  • LTS meldt alleen updates van langlopende service (LTS) GA-releases

Opmerking

De omgevingsvariabele $Env:POWERSHELL_UPDATECHECK bestaat pas als deze voor het eerst wordt ingesteld.

Om de versiemelding alleen voor LTS releases in te stellen:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Om de versiemelding op het Default gedrag in te stellen:

$Env:POWERSHELL_UPDATECHECK = 'Default'

Voor meer informatie over updatemeldingen.

Nieuwe DSC-bronondersteuning met Invoke-DSCResource (Experimenteel)

Opmerking

Dit is een experimentele functie genaamd PSDesiredStateConfiguration.InvokeDscResource. Voor meer informatie, zie Gebruik van experimentele functies.

De Invoke-DscResource cmdlet draait een methode van een gespecificeerde PowerShell Desired State Configuration (DSC) resource.

Deze cmdlet roept direct een DSC-resource aan, zonder een configuratiedocument aan te maken. Met deze cmdlet kunnen configuratiebeheerproducten Windows of Linux beheren door gebruik te maken van DSC-resources. Deze cmdlet maakt ook het debuggen van resources mogelijk wanneer de DSC-engine draait met debugging ingeschakeld.

Dit commando roept de Set-methode aan van een resource genaamd WindowsProcess en levert de verplichte eigenschappen Path en Arguments 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.

Breaking Changes en Verbeteringen

Belangrijke wijzigingen

  • Maak update-meldingen LTS en standaardkanalen ondersteunen (#11132)
  • Update Test-Connection meer werken zoals die in Windows PowerShell (#10697) (Bedankt) @vexx32!)
  • Sparen van geld? voor ParenExpression, SubExpression en ArrayExpression (#11040)
  • Stel werkmap in op huidige map in Start-Job (#10920) (Bedankt @iSazonov!)
  • Laat $PSCulture consequent de cultuurveranderingen tijdens de sessie weerspiegelen (#10138) (Bedankt @iSazonov!)

Motorupdates en -oplossingen

  • Verbeteringen in breakpoint-API's voor externe scenario's (#11312)
  • Herstel PowerShell-klassedefinitie die lekt in een andere runspace (#11273)
  • Herstel een regressie in de opmaak veroorzaakt door de FirstOrDefault-primitieve die is toegevoegd in 7.0.0-Preview1 (#11258)
  • Extra Microsoft-modules om te volgen in PS7 Telemetry (#10751)
  • Maak goedgekeurde functies niet-experimenteel (#11303)
  • Werk ConciseView bij om TargetObject te gebruiken indien van toepassing (#11075)
  • Fix NullReferenceException in CompletionCompleters publieke methoden (#11274)
  • Fix de statuscontrole van de appartementdraad op niet-Windows-platforms (#11301)
  • Update het instellen van PSModulePath om de proces- en machineomgevingsvariabelen te verbinden (#11276)
  • Verhoog .NET Core naar 3.1.0 (#11260)
  • Fixdetectie van $PSHOME voor $env:PATH (#11141)
  • Laat pwsh $env:PSModulePath erven en powershell.exe correct starten mogelijk (#11057)
  • Verhuizing naar .NET Core 3.1 preview 1 (#10798)
  • Refactor-reparse-tagcontroles in bestandssysteemprovider (#10431) (Bedankt @iSazonov!)
  • Vervang CR en nieuwe regel door een 0x23CE teken in scriptlogging (#10616)
  • Los een resourcelek op door de event handler uit AppDomain.CurrentDomain.ProcessExit (#10626) te verwijderen
  • Voeg ondersteuning toe aan ActionPreference.Break om in te breken in de debugger wanneer Debug-, Error-, Information-, Progress-, Verbose- of Waarschuwingsberichten worden gegenereerd (#8205) (Bedankt @KirkMunro!)
  • Schakel de startconfiguratieconfiguratie-add-ins in PowerShell in zonder .CPL extensie te specificeren. (#9828)
  • Steun negatieve getallen in -split operator (#8960) (Bedankt @ece-jacob-scott!)

Algemene updates en fixes van de cmdlet

  • Oplossing voor probleem op Raspbian voor het instellen van de datum van bestandswijzigingen in UnixStat Experimental Feature (#11313)
  • Voeg -AsPlainText toe aan ConvertFrom-SecureString (#11142)
  • WindowsPS-versiecontrole toegevoegd voor WinCompat (#11148)
  • Herstel van foutrapportage in sommige WinCompat-scenario's (#11259)
  • Voeg native binaire resolver toe (#11032) (Bedankt @iSazonov!)
  • Update de berekening van de breedte van de char om CJK-karakters correct te respecteren (#11262)
  • Voeg Unblock-File toe voor macOS (#11137)
  • Herstel regressie in Get-PSCallStack (#11210) (Bedankt @iSazonov!)
  • Verwijder het automatisch laden van de ScheduledJob-module bij gebruik van Job-cmdlets (#11194)
  • Voeg OutputType toe aan Get-Error cmdlet en behoud originele typenamen (#10856)
  • Fix null reference in de SupportsVirtualTerminal-eigenschap (#11105)
  • Voeg limietcontrole toe in Get-WinEvent (#10648) (Bedankt @iSazonov!)
  • Herstel de runtime van het commando zodat StopUpstreamCommandsException niet wordt ingevuld in -ErrorVariable (#10840)
  • Stel de uitvoercodering in op [Console]::OutputEncoding voor native commando's (#10824)
  • Ondersteun codeblokken met meerdere regels in voorbeelden (#10776) (Bedankt @Greg-Smulko!)
  • Voeg Culture-parameter toe aan Select-String cmdlet (#10943) (Bedankt @iSazonov!)
  • Herstel Start-Job werkend directorypad met trailing backslash (#11041)
  • ConvertFrom-Json: Unwrap collecties standaard (#10861) (Bedankt @danstur!)
  • Gebruik de hoofdlettergevoelige Hashtable voor Group-Object cmdlet met -CaseSensitive en -AsHashtable switches (#11030) (Bedankt @vexx32!)
  • Handle exception als het opsommen van bestanden faalt bij het herbouwen van het pad om de juiste behuizing te krijgen (#11014)
  • Fix ConciseView zodat het Activiteit toont in plaats van myCommand (#11007)
  • Laat web-cmdlets HTTP-foutstatussen negeren (#10466) (Bedankt @vdamewood!)
  • Repareer het pijpen van meer dan één CommandInfo naar Get-Command (#10929)
  • Voeg Get-Counter cmdlet voor Windows (#10933) weer toe
  • Laat ConvertTo-Json [AutomationNull]::Value en [NullString]::Value behandelen als $null (#10957)
  • Verwijder beugels van het IPv6-adres voor SSH-remoting (#10968)
  • Los crash op als het commando dat naar pwsh wordt gestuurd alleen witruimte is (#10977)
  • Cross-platform Get-Clipboard en Set-Clipboard toegevoegd (#10340)
  • Herstel het instellen van het oorspronkelijke pad van het bestandssysteemobject zodat er geen extra schuine streep wordt (#10959)
  • Ondersteuning $null voor ConvertTo-Json (#10947)
  • Voeg Out-Printer commando toe op Windows (#10906)
  • Los Start-Job -WorkingDirectory met witruimte (#10951)
  • Geef de standaardwaarde terug wanneer je null krijgt voor een instelling in PSConfiguration.cs (#10963) (Bedankt @iSazonov!)
  • Behandel IO-uitzondering als niet-terminerend (#10950)
  • Voeg GraphicalHost-assembly toe om Out-GridView, Show-Command en Get-Help -ShowWindow mogelijk te maken (#10899)
  • Neem ComputerName via de pipeline in Get-HotFix (#10852) (Bedankt @kvprasoon!)
  • Fix tab-completion voor parameters zodat gemeenschappelijke parameters beschikbaar worden weergegeven (#10850)
  • Fix GetCorrectCasedPath() om eerst te controleren of systeembestandsvermeldingen worden teruggegeven voordat je First() (#10930) aanroept.
  • Stel werkmap in op huidige map in Start-Job (#10920) (Bedankt @iSazonov!)
  • Verander TabExpansion2 zodat -CursorColumn niet meer nodig is en behandel als $InputScript.Length (#10849)
  • Behandel een geval waarin de host mogelijk geen rijen of kolommen van het scherm teruggeeft (#10938)
  • Herstel het gebruik van accentkleuren voor hosts die ze niet ondersteunen (#10937)
  • Voeg terug Update-List commando toe (#10922)
  • Update FWLink ID voor Clear-RecycleBin (#10925)
  • Tijdens het voltooien van tabbladen sla je het bestand over als je de attributen van het bestand niet kunt lezen (#10910).
  • Voeg Clear-RecycleBin toe voor Windows (#10909)
  • Voeg toe $env:__SuppressAnsiEscapeSequences om te bepalen of VT-escapesequentie in de uitgang moet zijn (#10814)
  • Voeg -NoEmphasize parameter toe om Select-String output te kleuren (#8963) (Bedankt @derek-xia!)
  • Voeg Get-HotFix cmdlet weer toe (#10740)
  • Maak Add-Type bruikbaar in applicaties die PowerShell hosten (#10587)
  • Gebruik effectievere evaluatievolgorde in LanguagePrimitives.IsNullLike() (#10781) (Bedankt @vexx32!)
  • Verbeter de omgang met gemengde verzameling gepiped input en gepiped inputstromen in Format-Hex (#8674) (Bedankt @vexx32!)
  • Gebruik typeconversie in SSHConnection hashtables wanneer de waarde niet overeenkomt met het verwachte type (#10720) (Bedankt @SeeminglyScience!)
  • Los Get-Content -ReadCount 0-gedrag op wanneer -TotalCount is ingesteld (#10749) (Bedankt @eugenesmlv!)
  • Foutmelding over herwoordtoegang geweigerd in Get-WinEvent (#10639) (Bedankt @iSazonov!)
  • Schakel tab-voltooiing in voor variabeletoewijzing die enum of type beperkt is (#10646)
  • Verwijder ongebruikte SourceLength afstandsbedieningseigenschap die opmaakproblemen veroorzaakt (#10765)
  • Voeg -Delimiter parameter toe aan ConvertFrom-StringData (#10665) (Bedankt @steviecoaster!)
  • Voeg positionele parameter toe voor ScriptBlock wanneer je Invoke-Command met SSH gebruikt (#10721) (Bedankt @machgo!)
  • Toon regelcontextinformatie als er meerdere regels zijn maar geen scriptnaam voor ConciseView (#10746)
  • Ondersteuning toevoegen voor \wsl$\ paden naar bestandssysteemprovider (#10674)
  • Voeg de ontbrekende tokentekst toe voor TokenKind.QuestionMark in de parser (#10706)
  • Stel de huidige werkmap van elk ForEach-Object -Parallel draaiende 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 het opmaakscript aanpassen zodat het meer StrictMode-tolerant is (#10563)
  • Voeg -SecurityDescriptorSDDL parameter toe aan New-Service (#10483) (Bedankt @kvprasoon!)
  • Verwijder informatieve output, consolideer het pinggebruik in Test-Connection (#10478) (Bedankt @vexx32!)
  • Lees speciale herhalingspunten zonder ze te gebruiken (#10662) (Bedankt @iSazonov!)
  • Direct Clear-Host uitvoer naar terminal (#10681) (Bedankt @iSazonov!)
  • Voeg een nieuwe lijn toe voor groeperen met Format-Table en -Property (#10653)
  • Verwijder [ValidateNotNullOrEmpty] uit -InputObject op Get-Random om lege string toe te staan (#10644)
  • Maak het algoritme voor suggestiesysteem, stringafstand, ongevoelig voor hoofdletters (#10549) (Dank je @iSazonov!)
  • Herstel nullreferentie-uitzondering in ForEach-Object -Parallel invoerverwerking (#10577)
  • Voeg PowerShell-groepsbeleiddefinities toe (#10468)
  • Werk consolehost bij om XTPUSHSGR/XTPOPSGR VT-controlesequenties te ondersteunen die worden gebruikt in composability-scenario's. (#10208)
  • Voeg de WorkingDirectory-parameter toe aan Start-Job (#10324) (Bedankt @davinci26!)
  • Verwijder de event handler die ervoor zorgde dat breakpoint-wijzigingen foutief werden gerepliceerd naar de host-runspace-debugger (#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) (Dank je @iSazonov!)
  • Herstel foute output voor New-Service in variabeletoewijzing en -OutVariable (#10444) (Bedankt @kvprasoon!)
  • Los globale toolproblemen op rond exitcode, commandoregelparameters en pad met spaties (#10461)
  • Recursie in OneDrive repareren - verander FindFirstFileEx() naar het type SafeFindHandle (#10405)
  • Sla het automatisch laden van PSReadLine over op Windows als de NVDA-schermlezer actief is (#10385)
  • Uitbreid versies met built-with-PowerShell-modules naar 7.0.0.0 (#10356)
  • Voeg een foutmelding toe in Add-Type als er al een type met dezelfde naam bestaat (#9609) (Bedankt @iSazonov!)

Performance

  • Vermijd het gebruik van closure in Parser.SaveError (#11006)
  • Verbeter de caching bij het aanmaken van nieuwe Regex-instanties (#10657) (Bedankt @iSazonov!)
  • Verbeter de verwerking van de PowerShell ingebouwde typegegevens van types.ps1xml, typesV3.ps1xml en GetEvent.types.ps1xml (#10898)
  • Werk PSConfiguration.ReadValueFromFile bij om het sneller en geheugenefficiënter te maken (#10839)
  • Voeg kleine prestatieverbeteringen toe voor runspace-initialisatie (#10569) (Bedankt @iSazonov!)
  • Maak ForEach-Object sneller voor de veelgebruikte scenario's (#10454) en los ForEach-Object -Parallel prestatieprobleem op met veel runspaces (#10455)

Opschonen van code

  • Verander commentaar en elementtekst om te voldoen aan de Microsoft-standaarden (#11304)
  • Problemen met opruimstijl in Compiler.cs (#10368) (Bedankt @iSazonov!)
  • Verwijder de ongebruikte type-converter voor CommaDelimitedStringCollection (#11000) (Bedankt @iSazonov!)
  • Opruimstijl in InitialSessionState.cs (#10865) (Bedankt @iSazonov!)
  • Code schoonmaak voor PSSession-cursus (#11001)
  • Verwijder de niet-werkende functie 'run Update-Help uit Get-Help wanneer Get-Help voor het eerst draait' (#10974)
  • Fix stijlproblemen (#10998) (Bedankt @iSazonov!)
  • Opruimen: gebruik het ingebouwde type-alias (#10882) (Bedankt @iSazonov!)
  • Verwijder de ongebruikte instellingssleutel ConsolePrompting en voorkom onnodige stringcreatie bij het queryen van de ExecutionPolicy-instelling (#10985)
  • Schakel update-meldingen uit voor dagelijkse builds (#10903) (Bedankt @bergmeister!)
  • Herstel debugging API verloren in #10338 (#10808)
  • Verwijder de WorkflowJobSourceAdapter-referentie die niet meer wordt gebruikt (#10326) (Bedankt @KirkMunro!)
  • Maak COM-interfaces in jump list-code schoon door PreserveSig-attributen te corrigeren (#9899) (Dank je @weltkante!)
  • Voeg een opmerking toe waarin wordt uitgelegd waarom -ia niet de alias is voor -InformationAction gemeenschappelijke parameter (#10703) (Dank je). @KirkMunro!)
  • Hernoem InvokeCommandCmdlet.cs naar InvokeExpressionCommand.cs (#10659) (Bedankt @kilasuit!)
  • Voeg kleine code-opruimingen toe die gerelateerd zijn aan updatemeldingen (#10698)
  • Verwijder verouderde workflowlogica uit de remoting-setupscripts (#10320) (Bedankt @KirkMunro!)
  • Werk het hulpformaat bij om de juiste omvalsvorm te gebruiken (#10678) (Bedankt @tnieto88!)
  • Schoonmaak CodeFactor-achtige problemen op in commits van de afgelopen maand (#10591) (Bedankt @iSazonov!)
  • Typfout in beschrijving van PSTernaryOperator experimentele functie (#10586) (Bedankt @bergmeister!)
  • Zet ActionPreference.Pauzeer de enumeratiewaarde op in een niet-ondersteunde, gereserveerde toestand, en verwijder de beperking op het gebruik van ActionPreference.Negeer in voorkeurvariabelen (#10317) (Dank je @KirkMunro!)
  • Vervang ArrayList door List<T> om leesbaardere en betrouwbaardere code te krijgen zonder de functionaliteit te veranderen (#10333) (Bedankt @iSazonov!)
  • Maak codestijl-fixes voor TestConnectionCommand (#10439) (Bedankt @vexx32!)
  • Cleanup AutomationEngine en verwijder de extra SetSessionStateDrive-methodeoproep (#10416) (Bedankt @iSazonov!)
  • Hernoem standaard ParameterSetName terug naar afscheidingsteken voor ConvertTo-Csv en ConvertFrom-Csv (#10425)

Tools

  • Voeg de standaardinstelling toe voor de SDKToUse-eigenschap zodat deze in VS wordt gebouwd (#11085)
  • Install-Powershell.ps1: Voeg parameter toe om MSI-installatie te gebruiken (#10921) (Bedankt @MJECloud!)
  • Voeg basisvoorbeelden toe voor install-powershell.ps1 (#10914) (Bedankt @kilasuit!)
  • Laat Install-PowerShellRemoting.ps1 lege string in PowerShellHome-parameter (#10526) (Bedankt) behandelen @Orca88!)
  • Schakel in install-powershell.sh over van /etc/lsb-release naar /etc/os-release (#10773) (Bedankt @Himura2la!)
  • Controleer pwsh.exe en pwsh in de dagelijkse versie op Windows (#10738) (Bedankt @centreboard!)
  • Verwijder de onnodige kraan in installpsh-osx.sh (#10752)
  • Update install-powershell.ps1 om te controleren op al geïnstalleerde dagelijkse build (#10489)

Testen

  • Maak onbetrouwbare DSC-test in behandeling (#11131)
  • Fix stringdata-test om de sleutels van hashtables correct te valideren (#10810)
  • Testmodules ontladen (#11061) (Bedankt @iSazonov!)
  • Verleng de tijd tussen herhalingen van test-URL (#11015)
  • Werk tests bij om testacties nauwkeurig te beschrijven. (#10928) (Dank je @romero126!)
  • Sla de onbetrouwbare test TestAppDomainProcessExitEvenHandlerNotLeaking (#10827) tijdelijk over
  • Maak de event handler lektest stabiel (#10790)
  • Synchronisatie van hoofdletters in CI YAML (#10767) (Bedankt @RDIL!)
  • Voeg test toe voor de event handler-lekfix (#10768)
  • Voeg Get-ChildItem test toe (#10507) (Bedankt @iSazonov!)
  • Vervang de ambigue taal voor tests van switch naar parameter voor nauwkeurigheid (#10666) (Dank je @romero126!)
  • Voeg experimentele controle toe aan ForEach-Object -Parallel tests (#10354) (Bedankt @KirkMunro!)
  • Update tests voor Alpine validatie (#10428)

Verbeteringen aan het bouwen en pakketten

  • Herstel Nuget-pakketondertekening voor Coordinated Package build (#11316)
  • Update afhankelijkheden van PowerShell Gallery en NuGet (#11323)
  • Verhoog Microsoft.ApplicationInsights van 2.11.0 naar 2.12.0 (#11305)
  • Verhoog 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 in (#11162)
  • Update macOS minimumversie (#11163)
  • Verhoog NJsonSchema van 27.10.00 naar 28.10.00 (#11170)
  • Links bijwerken in README.md en metadata.json voor Preview.5 (#10854)
  • Selecteer de bestanden voor compliance-tests die eigendom zijn van PowerShell (#10837)
  • Laat het win7x86 msix-pakket bouwen. (Intern 10515)
  • Sta toe dat semantische versies worden doorgegeven aan de NormalizeVersion-functie (#11087)
  • Verhoog .NET core framework naar 3.1-preview.3 (#11079)
  • PSReadLine omhoog van 2.0.0-beta5 naar 2.0.0-beta6 in /src/Modules (#11078)
  • Verleng Newtonsoft.Json van 12.0.2 naar 12.0.3 (#11037) (#11038)
  • Voeg Debian 10, 11 en CentOS 8 pakketten toe (#11028)
  • Upload Build-Info Json-bestand met het veld ReleaseDate (#10986)
  • Verhoog .NET core framework naar 3.1-preview.2 (#10993)
  • Schakel de build van x86 MSSIX-pakket in (#10934) in
  • Werk de dotnet SDK installatiescript URL bij in build.psm1 (#10927)
  • Bump Markdig. Getekend van 0.17.1 tot 0.18.0 (#10887)
  • Bump ThreadJob van 2.0.1 naar 2.0.2 (#10886)
  • Update AppX Manifest en Packaging module om te voldoen aan de MS Store-eisen (#10878)
  • Update package reference voor PowerShell SDK naar preview.5 (Internal 10295)
  • Update ThirdPartyNotices.txt (#10834)
  • Bump Microsoft.PowerShell.Native naar 7.0.0-preview.3 (#10826)
  • Verhoog Microsoft.ApplicationInsights van 2.10.0 naar 2.11.0 (#10608)
  • Verhoog NJsonSchema van 10.0.24 naar 10.0.27 (#10756)
  • Voeg MacPorts-ondersteuning toe aan het buildsysteem (#10736) (Bedankt @Lucius-Q-User!)
  • Bump PackageManagement van 1.4.4 naar 1.4.5 (#10728)
  • Verhoog NJsonSchema van 10.0.23 naar 10.0.24 (#10635)
  • Voeg omgevingsvariabele toe om client/server-telemetrie te onderscheiden in MSI (#10612)
  • PSDesiredStateConfiguration verhogen van 2.0.3 naar 2.0.4 (#10603)
  • Zet Microsoft.CodeAnalysis.CSharp van 3.2.1 naar 3.3.1 (#10607)
  • Update naar .Net Core 3.0 RTM (#10604) (Bedankt @bergmeister!)
  • Werk de MSIX-verpakking bij zodat de versie voldoet aan de Windows Store-eisen (#10588)
  • PowerShellGet-versie verhogen van 2.2 naar 2.2.1 (#10382)
  • Bump PackageManagement-versie van 1.4.3 naar 1.4.4 (#10383)
  • Update README.md en metadata.json voor 7.0.0-preview.4 (Intern 10011)
  • Upgrade .Net Core 3.0-versie van Preview 9 naar RC1 (#10552) (Bedankt @bergmeister!)
  • Fix ExperimentalFeature lijstgeneratie (Intern 9996)
  • Verhoog de PSReadLine-versie van 2.0.0-beta4 naar 2.0.0-beta5 (#10536)
  • Fix release build script om release tag in te stellen
  • Update versie van Microsoft.PowerShell.Native naar 7.0.0-preview.2 (#10519)
  • Upgrade naar Netcoreapp3.0 preview9 (#10484) (Bedankt @bergmeister!)
  • Zorg dat de dagelijkse gecoördineerde build een dagelijkse build is en weet dat het een dagelijkse build is (#10464).
  • Werk de gecombineerde pakketversie bij om de dagelijkse builds uit te brengen (#10449)
  • Verwijder de appleverenrreferentie (#10445) (Bedankt @RDIL!)
  • Verhoog de NJsonSchema-versie van 10.0.22 naar 10.0.23 (#10421)
  • Verwijder het verwijderen van de linux-x64 buildmap omdat sommige afhankelijkheden voor Alpine dit nodig hebben (#10407)

Documentatie en hulpinhoud

  • Refactoren wijzigingslogs naar één log per release (#11165)
  • Los FWLinks voor PowerShell 7 online hulpdocumenten op (#11071)
  • Update CONTRIBUTING.md (#11096) (Bedankt @mklement0!)
  • Fix installatiedocumentlinks in README.md (#11083)
  • Voegt voorbeelden toe aan install-powershell.ps1 script (#11024) (Bedankt @kilasuit!)
  • Herstel van Select-String nadruk en Import-DscResource in CHANGELOG.md (#10890)
  • Verwijder de verouderde link van powershell-beginners-guide.md (#10926)
  • Samenvoegen van stabiele en onderhoudswijzigingslogboeken (#10527)
  • Update gebruikte .NET-versie in build-docs (#10775) (Bedankt @Greg-Smulko!)
  • Vervang links van MSDN naar Microsoft Learn in powershell-beginners-guide.md (#10778) (Bedankt @iSazonov!)
  • Fix de gebroken DSC-overzichtslink (#10702)
  • Update Support_Question.md om te linken naar Stack Overflow als een andere communitybron (#10638) (Bedankt @mklement0!)
  • Voeg processorarchitectuur toe aan distributieverzoektemplate (#10661)
  • Voeg nieuw PowerShell MoL-boek toe aan het leren van PowerShell-documenten (#10602)
  • Update README.md en metadata voor v6.1.6 en v6.2.3 releases (#10523)
  • Herstel een typefout in README.md (#10465) (Bedankt @vedhasp!)
  • Voeg een verwijzing naar de PSKoans-module toe aan de Learning Resources-documentatie (#10369) (Bedankt @vexx32!)
  • Update README.md en metadata.json voor 7.0.0-preview.3 (#10393)