Nyheter i PowerShell 7.0

PowerShell 7.0 är en version av PowerShell med öppen källkod och plattformsoberoende version (Windows, macOS och Linux) som skapats för att hantera heterogena miljöer och hybridmoln.

I den här versionen introducerar vi ett antal nya funktioner, bland annat:

  • Pipelineparallellisering med ForEach-Object -Parallel
  • Nya operatorer:
    • Ternary-operator: a ? b : c
    • Pipelinekedjeoperatorer: || och &&
    • Villkorsstyrda operatorer för null: ?? och ??=
  • En förenklad och dynamisk felvy och Get-Error cmdlet för enklare undersökning av fel
  • Ett kompatibilitetslager som gör det möjligt för användare att importera moduler i en implicit Windows PowerShell session
  • Meddelanden om automatisk ny version
  • Möjligheten att anropa DSC-resurser direkt från PowerShell 7 (experimentell)

En fullständig lista över funktioner och korrigeringar finns i ändringsloggarna.

Var kan jag installera PowerShell?

PowerShell 7 stöder för närvarande följande operativsystem på x64, inklusive:

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

Dessutom stöder PowerShell 7.0 ARM32- och ARM64-varianter av Debian, Ubuntu och ARM64 Alpine Linux.

Kontrollera installationsanvisningarna för önskat operativsystem Windows, macOS eller Linux.

Communityn har inte officiellt stöd, men har även tillhandahållit paket för Arch och Kali Linux.

Anteckning

Debian 10 och CentOS 8 stöder för närvarande inte WinRM-fjärrkommunikation. Mer information om hur du konfigurerar SSH-baserad fjärrkommunikation finns i PowerShell-fjärrkommunikation via SSH.

Mer uppdaterad information om operativsystem som stöds och supportlivscykel finns i Livscykel för PowerShell-support.

Köra PowerShell 7

PowerShell 7 installeras i en katalog separat från Windows PowerShell. På så sätt kan du köra PowerShell 7 sida vid sida med Windows PowerShell 5.1. För PowerShell 6.x är PowerShell 7 en uppgradering på plats som tar bort PowerShell 6.x.

  • PowerShell 7 är installerat på %programfiles%\PowerShell\7
  • Mappen %programfiles%\PowerShell\7 läggs till i $env:PATH

PowerShell 7-installationspaketet uppgraderar tidigare versioner av PowerShell 6.x:

  • PowerShell 6.x i Windows: %programfiles%\PowerShell\6 ersätts av %programfiles%\PowerShell\7
  • Linux: /opt/microsoft/powershell/6 ersätts av /opt/microsoft/powershell/7
  • macOS: /usr/local/microsoft/powershell/6 ersätts av /usr/local/microsoft/powershell/7

Anteckning

I Windows PowerShell heter powershell.exeden körbara filen för att starta PowerShell . I version 6 och senare ändras det körbara namnet för att stödja körning sida vid sida. Det nya körbara namnet för att starta PowerShell 7 är pwsh.exe. Förhandsversioner finns kvar på plats i pwsh-preview stället för pwsh under katalogen 7-preview.

Förbättrad bakåtkompatibilitet med Windows PowerShell

PowerShell 7.0 markerar en flytt till .NET Core 3.1, vilket ger betydligt mer bakåtkompatibilitet med befintliga Windows PowerShell moduler. Detta omfattar många moduler i Windows som kräver GUI-funktioner som Out-GridView och Show-Command, samt många rollhanteringsmoduler som levereras som en del av Windows.

För Windows läggs en ny switchparameter UseWindowsPowerShell till i Import-Module. Den här växeln skapar en proxymodul i PowerShell 7 som använder en lokal Windows PowerShell process för att implicit köra alla cmdletar som finns i modulen. Mer information om Import-Module.

Mer information om vilka Microsoft-moduler som fungerar med PowerShell 7.0 finns i tabellen Modulkompatibilitet.

Parallell körning har lagts till i ForEach-Object

Cmdleten ForEach-Object , som itererar objekt i en samling, har nu inbyggd parallellitet med den nya parallella parametern.

Som standard använder parallella skriptblock den aktuella arbetskatalogen för anroparen som startade de parallella uppgifterna.

Det här exemplet hämtar 50 000 loggposter från 5 systemloggar på en lokal Windows-dator:

$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

Parametern Parallel anger skriptblocket som körs parallellt för varje indataloggnamn.

Den nya parametern ThrottleLimit begränsar antalet skriptblock som körs parallellt vid en viss tidpunkt. Standardvärdet är 5.

Använd variabeln $_ för att representera det aktuella indataobjektet i skriptblocket. Använd omfånget $using: för att skicka variabelreferenser till skriptblocket som körs.

Mer information om ForEach-Object.

Operatorn Ternary

PowerShell 7.0 introducerar en ternary-operator som fungerar som en förenklad if-else instruktion. PowerShells operator för ternary är nära modellerad från operatorsyntaxen för C# ternary:

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

Villkorsuttrycket utvärderas alltid och resultatet konverteras till ett booleskt värde för att avgöra vilken gren som ska utvärderas härnäst:

  • Uttrycket <if-true> körs om <condition> uttrycket är sant
  • Uttrycket <if-false> körs om <condition> uttrycket är falskt

Exempel:

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

Om sökvägen finns i det här exemplet visas Sökvägen . Om sökvägen inte finns visas sökvägen som inte hittades .

Mer information om If.

Pipelinekedjeoperatorer

PowerShell 7 implementerar operatorerna && och || för att villkorligt länka pipelines. Dessa operatorer kallas i PowerShell för "pipeline chain operators" och liknar AND- och OR-listor i gränssnitt som bash och zsh, samt symboler för villkorsstyrd bearbetning i Windows Command Shell (cmd.exe).

Operatorn && kör den högra pipelinen om den vänstra pipelinen lyckades. Omvänt kör operatorn || den högra pipelinen om den vänstra pipelinen misslyckades.

Anteckning

Dessa operatorer använder variablerna $? och $LASTEXITCODE för att avgöra om en pipeline misslyckades. På så sätt kan du använda dem med inbyggda kommandon och inte bara med cmdletar eller funktioner.

Här lyckas det första kommandot och det andra kommandot körs:

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

Här misslyckas det första kommandot, det andra körs inte:

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

Här lyckas det första kommandot, det andra kommandot körs inte:

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

Här misslyckas det första kommandot, så det andra kommandot körs:

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

Mer information om pipelinekedjeoperatorer.

Null-sammankoppling, tilldelning och villkorsstyrda operatorer

PowerShell 7 innehåller operatorn ??Null coalescing , Null conditional assignment ??=och Null conditional member access operators ?. och ?[].

Null-coalescing Operator ??

Operatorn ?? null-coalescing returnerar värdet för dess vänstra operand om den inte är null. Annars utvärderas den högra operanden och dess resultat returneras. Operatorn ?? utvärderar inte dess högra operand om den vänstra operand utvärderas till icke-null.

$x = $null
$x ?? 100
100

I följande exempel utvärderas inte den högra operanden:

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

Null-operator för villkorsstyrd tilldelning ?? =

Operatorn ??= för villkorsstyrd tilldelning med null tilldelar endast värdet för dess högra operand till den vänstra operanden om den vänstra operanden utvärderas till null. Operatorn ??= utvärderar inte dess högra operand om den vänstra operand utvärderas till icke-null.

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

I följande exempel utvärderas inte den högra operanden:

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

Null villkorsstyrda medlemsåtkomstoperatorer ?. Och? [] (experimentell)

Anteckning

Det här är en experimentell funktion med namnet PSNullConditionalOperators. Mer information finns i Använda experimentella funktioner.

En villkorsoperator med null tillåter medlemsåtkomst, ?., eller elementåtkomst, , ?[]till dess operand endast om operanden utvärderas till icke-null. Annars returneras null.

Anteckning

Eftersom PowerShell kan ? ingå i variabelnamnet krävs en formell specifikation av variabelnamnet för att använda dessa operatorer. Därför måste du använda {} runt variabelnamn ${a} som eller när ? är en del av variabelnamnet ${a?}.

I följande exempel returneras värdet för medlemsegenskapen Status :

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

Följande exempel returnerar null, utan att försöka komma åt medlemsnamnet Status:

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

På samma sätt returneras värdet för -elementet med hjälp ?[]av :

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

Och när operanden är null används inte elementet och null returneras:

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

Mer information About_Operators.

Ny vy– ConciseView och cmdlet Get-Error

PowerShell 7.0 förbättrar visning av felmeddelanden för att förbättra läsbarheten för interaktiva fel och skriptfel med en ny standardvy ConciseView. Vyerna kan väljas av användaren via inställningsvariabeln $ErrorView.

Om ett fel inte kommer från ett skript- eller parserfel med ConciseView är det ett felmeddelande med en rad:

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

Om felet inträffar under skriptkörningen eller är ett parsningsfel returnerar PowerShell ett felmeddelande med flera rader som innehåller felet, en pekare och ett felmeddelande som visar var felet finns på den raden. Om terminalen inte stöder ANSI-färgutrymningssekvenser (VT100) visas inte färger.

Fel vid visning från ett skript

Standardvyn i PowerShell 7 är ConciseView. Den tidigare standardvyn var NormalView och du kan välja detta genom att ange inställningsvariabeln $ErrorView.

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

Anteckning

En ny egenskap ErrorAccentColor läggs till i för att $Host.PrivateData stöda ändring av accentfärgen för felmeddelandet.

En ny cmdlet Get-Error ger en fullständig detaljerad vy över det fullständigt kvalificerade felet när du vill. Som standard visar cmdleten fullständig information, inklusive inre undantag, om det senaste felet som inträffade.

Visa från Get-Error

Cmdleten Get-Error stöder indata från pipelinen med hjälp av den inbyggda variabeln $Error. Get-Error visar alla piped-fel.

$Error | Get-Error

Cmdleten Get-Error stöder parametern Newest , så att du kan ange hur många fel från den aktuella sessionen som du vill ska visas.

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

Mer information om Get-Error.

Meddelande om ny version

PowerShell 7 använder uppdateringsaviseringar för att varna användare om att det finns uppdateringar av PowerShell. En gång per dag frågar PowerShell en onlinetjänst för att avgöra om en nyare version är tillgänglig.

Anteckning

Uppdateringskontrollen sker under den första sessionen under en viss 24-timmarsperiod. Av prestandaskäl startar uppdateringskontrollen 3 sekunder efter att sessionen har påbörjats. Meddelandet visas bara i början av efterföljande sessioner.

Som standard prenumererar PowerShell på en av två olika meddelandekanaler beroende på dess version/gren. Ga-versioner (allmänt tillgängliga) av PowerShell returnerar endast meddelanden för uppdaterade GA-versioner. Förhandsversions- och versionsversioner (RC) meddelar om uppdateringar av förhandsversioner, RC- och GA-versioner.

Beteendet för uppdateringsmeddelanden kan ändras med hjälp av $Env:POWERSHELL_UPDATECHECK miljövariabeln. Följande värden stöds:

  • Standardvärdet är detsamma som att inte definiera $Env:POWERSHELL_UPDATECHECK
    • GA-versioner meddelar om uppdateringar av GA-versioner
    • Förhandsversioner/RC-versioner meddelar om uppdateringar av allmänt tillgängliga versioner och förhandsversioner
  • Inaktivera inaktiverar funktionen för uppdateringsavisering
  • LTS meddelar endast om uppdateringar av lts-versioner (long-term-servicing) GA

Anteckning

Miljövariabeln $Env:POWERSHELL_UPDATECHECK finns inte förrän den har angetts för första gången.

Så här anger du versionsmeddelandet endast för LTS versioner:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

Så här anger du versionsmeddelandet till beteendet Default :

$Env:POWERSHELL_UPDATECHECK = 'Default'

Mer information om uppdateringsaviseringar.

Nytt DSC-resursstöd med Invoke-DSCResource (experimentell)

Anteckning

Det här är en experimentell funktion med namnet PSDesiredStateConfiguration.InvokeDscResource. Mer information finns i Använda experimentella funktioner.

Cmdleten Invoke-DscResource kör en metod för en angiven PowerShell Desired State Configuration-resurs (DSC).

Den här cmdleten anropar en DSC-resurs direkt utan att skapa ett konfigurationsdokument. Med den här cmdleten kan konfigurationshanteringsprodukter hantera Windows eller Linux med hjälp av DSC-resurser. Den här cmdleten möjliggör också felsökning av resurser när DSC-motorn körs med felsökning aktiverat.

Det här kommandot anropar metoden Set för en resurs med namnet WindowsProcess och tillhandahåller de obligatoriska egenskaperna Sökväg och Argument för att starta den angivna Windows-processen.

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

Mer information om Invoke-DSCResource.

Icke-bakåtkompatibla ändringar och förbättringar

Icke-bakåtkompatibla ändringar

  • Gör uppdateringsmeddelandet har stöd för LTS och standardkanaler (#11132)
  • Uppdatera Test-Connection för att fungera mer som i Windows PowerShell (#10697) (tack@vexx32!)
  • Bevara $? för ParenExpression, SubExpression och ArrayExpression (#11040)
  • Ange arbetskatalog till aktuell katalog i Start-Job (#10920) (tack @iSazonov!)
  • Gör $PSCulture konsekvent återspeglar kulturändringar i sessionen (#10138) (tack @iSazonov!)

Motor Uppdateringar och korrigeringar

  • Förbättringar av brytpunkts-API:er för fjärrscenarier (#11312)
  • Åtgärda läckage av PowerShell-klassdefinitioner till ett annat Runspace (#11273)
  • Åtgärda en regression i formateringen som orsakas av primitiven FirstOrDefault som lades till i 7.0.0-Preview1 (#11258)
  • Ytterligare Microsoft-moduler att spåra i PS7-telemetri (#10751)
  • Gör godkända funktioner icke-experimentella (#11303)
  • Uppdatera ConciseView för att använda TargetObject om tillämpligt (#11075)
  • Åtgärda NullReferenceException i CompletionCompleters offentliga metoder (#11274)
  • Åtgärda tillståndskontroll av lägenhetstrådar på icke-Windows-plattformar (#11301)
  • Uppdatera inställningen PSModulePath för att sammanfoga process- och datormiljövariablerna (#11276)
  • Öka .NET Core till 3.1.0 (#11260)
  • Åtgärda identifiering av $PSHOME framför $env:PATH (#11141)
  • Tillåt pwsh att ärva $env:PSModulePath och aktivera powershell.exe för att starta korrekt (#11057)
  • Flytta till .NET Core 3.1 preview 1 (#10798)
  • Refaktorisera taggkontroller i filsystemsprovidern (#10431) (tack @iSazonov!)
  • Ersätt CR och ny rad med ett 0x23CE tecken i skriptloggning (#10616)
  • Åtgärda en resursläcka genom att avregistrera händelsehanteraren från AppDomain.CurrentDomain.ProcessExit (#10626)
  • Lägg till stöd för ActionPreference.Break för att bryta in i felsökningsprogrammet när fel-, fel-, informations-, förlopps-, utförliga- eller varningsmeddelanden genereras (#8205) (tack @KirkMunro!)
  • Aktivera start av tillägg för Kontrollpanelen i PowerShell utan att ange .CPL tillägget. (#9828)
  • Stöd för negativa tal i operatorn -split (#8960) (tack @ece-jacob-scott!)

Allmänna cmdlet-Uppdateringar och korrigeringar

  • Korrigering av problem med Raspbian för att ange datum för filändringar i UnixStat Experimental Feature (#11313)
  • Lägg till -AsPlainText i ConvertFrom-SecureString (#11142)
  • WindowsPS-versionskontroll har lagts till för WinCompat (#11148)
  • Åtgärda felrapportering i vissa WinCompat-scenarier (#11259)
  • Lägg till intern binär matchare (#11032) (tack @iSazonov!)
  • Uppdatera beräkningen av teckenbredden så att CJK-tecken respekteras korrekt (#11262)
  • Lägg till Unblock-File för macOS (#11137)
  • Åtgärda regression i Get-PSCallStack (#11210) (tack @iSazonov!)
  • Ta bort automatisk inläsning av modulen ScheduledJob när du använder jobb-cmdletar (#11194)
  • Lägg till OutputType i Get-Error cmdlet och bevara ursprungliga typnamn (#10856)
  • Åtgärda null-referens i egenskapen SupportsVirtualTerminal (#11105)
  • Lägg till gränskontroll i Get-WinEvent (#10648) (Tack @iSazonov!)
  • Åtgärda körningen av kommandot så att StopUpstreamCommandsException inte fylls i i -ErrorVariable (#10840)
  • Ange utdatakodningen till [Console]::OutputEncoding for native commands (#10824)
  • Stöd för flerradskodblock i exempel (#10776) (tack @Greg-Smulko!)
  • Lägg till kulturparameter i Select-String cmdlet (#10943) (tack @iSazonov!)
  • Åtgärda Start-Job arbetskatalogsökväg med avslutande omvänt snedstreck (#11041)
  • ConvertFrom-Json: Packa upp samlingar som standard (#10861) (tack @danstur!)
  • Använd skiftlägeskänslig hashtable för Group-Object cmdlet med -CaseSensitive- och -AsHashtable-växlar (#11030) (tack @vexx32!)
  • Hantera undantag om uppräkning av filer misslyckas vid återskapande av sökvägen för att ha rätt hölje (#11014)
  • Åtgärda ConciseView för att visa aktivitet i stället för myCommand (#11007)
  • Tillåt webb-cmdletar att ignorera HTTP-felstatusar (#10466) (tack @vdamewood!)
  • Åtgärda rördragning av fler än en CommandInfo till Get-Command (#10929)
  • Lägg till Get-Counter cmdlet för Windows (#10933)
  • Gör ConvertTo-Json behandla [AutomationNull]::Värde och [NullString]::Värde som $null (#10957)
  • Ta bort hakparenteser från ipv6-adress för SSH-fjärrkommunikation (#10968)
  • Åtgärda krasch om kommandot som skickas till pwsh bara är tomt utrymme (#10977)
  • Lade till plattformsoberoende Get-Clipboard och Set-Clipboard (#10340)
  • Åtgärda att den ursprungliga sökvägen för filsystemobjektet inte har extra avslutande snedstreck (#10959)
  • Support $null för ConvertTo-Json (#10947)
  • Lägg till Out-Printer-kommandot i Windows (#10906)
  • Åtgärda Start-Job -WorkingDirectory med blanksteg (#10951)
  • Returnera standardvärdet när du får null för en inställning i PSConfiguration.cs (#10963) (Tack @iSazonov!)
  • Hantera I/O-undantag som icke-avslutande (#10950)
  • Lägg till GraphicalHost-sammansättning för att aktivera Out-GridView, Show-Command och Get-Help -ShowWindow (#10899)
  • Ta ComputerName via pipeline i Get-HotFix (#10852) (Tack @kvprasoon!)
  • Åtgärda flikkomplettering för parametrar så att de visar vanliga parametrar som tillgängliga (#10850)
  • Åtgärda GetCorrectCasedPath() för att först kontrollera om några systemfilposter returneras innan du anropar First() (#10930)
  • Ange arbetskatalog till aktuell katalog i Start-Job (#10920) (tack @iSazonov!)
  • Ändra TabExpansion2 till att inte kräva -CursorColumn och behandla som $InputScript.Length (#10849)
  • Hantera fall där värden kanske inte returnerar rader eller kolumner på skärmen (#10938)
  • Åtgärda användningen av accentfärger för värdar som inte stöder dem (#10937)
  • Lägg till Update-List kommando (#10922)
  • Uppdatera FWLink-ID för Clear-RecycleBin (#10925)
  • När fliken är klar hoppar du över filen om det inte går att läsa filattribut (#10910)
  • Lägg till Clear-RecycleBin för Windows (#10909)
  • Lägg $env:__SuppressAnsiEscapeSequences till för att styra om VT-escapesekvensen ska ha utdata (#10814)
  • Lägg till parametern -NoEmphasize för att färglägga Select-String utdata (#8963) (tack @derek-xia!)
  • Lägg till Get-HotFix cmdlet (#10740)
  • Gör Add-Type användbara i program som är värdar för PowerShell (#10587)
  • Använd effektivare utvärderingsordning i LanguagePrimitives.IsNullLike() (#10781) (Tack @vexx32!)
  • Förbättra hanteringen av pipade indata och indataströmmar med blandade samlingar i Format-Hex (#8674) (Tack @vexx32!)
  • Använd typkonvertering i SSHConnection-hashtables när värdet inte matchar förväntad typ (#10720) (tack @SeeminglyScience!)
  • Åtgärda beteendet Get-Content -ReadCount 0 när -TotalCount har angetts (#10749) (tack @eugenesmlv!)
  • Omformulera felmeddelande om nekad åtkomst i Get-WinEvent (#10639) (tack @iSazonov!)
  • Aktivera flikslutning för variabeltilldelning som är uppräkning eller typbegränsad (#10646)
  • Ta bort den oanvända egenskapen SourceLength-fjärrkommunikation som orsakar formateringsproblem (#10765)
  • Lägg till parametern -Delimiter i ConvertFrom-StringData (#10665) (tack @steviecoaster!)
  • Lägg till positionsparameter för ScriptBlock när du använder Invoke-Command med SSH (#10721) (tack @machgo!)
  • Visa radkontextinformation om flera rader men inget skriptnamn för ConciseView (#10746)
  • Lägg till stöd för sökvägar för \wsl$\ till filsystemprovidern (#10674)
  • Lägg till den tokentext som saknas för TokenKind.QuestionMark i parser (#10706)
  • Ange den aktuella arbetskatalogen för varje ForEach-Object -Parallel-skript som körs på samma plats som det anropande skriptet. (#10672)
  • Ersätt api-ms-win-core-file-l1-2-2.dll med Kernell32.dll för API:er för FindFirstStreamW och FindNextStreamW (#10680) (tack @iSazonov!)
  • Justera hjälpformatering av skript för att bli mer StrictMode tolerant (#10563)
  • Lägg till parametern -SecurityDescriptorSDDL i New-Service (#10483) (tack @kvprasoon!)
  • Ta bort informationsutdata, konsolidera pinganvändningen i Test-Connection (#10478) (tack @vexx32!)
  • Läs särskilda referenspunkter utan att komma åt dem (#10662) (Tack @iSazonov!)
  • Direkt Clear-Host utdata till terminalen (#10681) (tack @iSazonov!)
  • Lägg till ny backlinje för gruppering med Format-Table och -Egenskap (#10653)
  • Ta bort [ValidateNotNullOrEmpty] från -InputObject på Get-Random för att tillåta tom sträng (#10644)
  • Gör förslag systemsträng avstånd algoritm skiftlägesokänslig (#10549) (Tack @iSazonov!)
  • Åtgärda null-referensfel i ForEach-Object –Parallell indatabearbetning (#10577)
  • Lägg till PowerShell-grupprincipdefinitioner (#10468)
  • Uppdatera konsolvärden för att stödja XTPUSHSGR/XTPOPSGR VT-kontrollsekvenser som används i sammansättningsscenarier. (#10208)
  • Lägg till WorkingDirectory-parametern i Start-Job (#10324) (tack @davinci26!)
  • Ta bort händelsehanteraren som orsakade att brytpunktsändringar felaktigt replikeras till felsökaren för värdkörningsytan (#10503) (Tack @KirkMunro!)
  • Ersätt api-ms-win-core-job-12-1-0.dll med Kernell32.dll i Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Tack @iSazonov!)
  • Åtgärda fel utdata för New-Service i variabeltilldelning och -OutVariable (#10444) (tack @kvprasoon!)
  • Åtgärda problem med globala verktyg kring slutkod, kommandoradsparametrar och sökväg med blanksteg (#10461)
  • Åtgärda rekursion i OneDrive – ändra FindFirstFileEx() till att använda Typen SafeFindHandle (#10405)
  • Hoppa över automatisk inläsning av PSReadLine i Windows om NVDA-skärmläsaren är aktiv (#10385)
  • Öka de inbyggda versionerna av PowerShell-modulen till 7.0.0.0 (#10356)
  • Lägg till ett fel i Add-Type om en typ med samma namn redan finns (#9609) (tack @iSazonov!)

Prestanda

  • Undvik att använda stängning i Parser.SaveError (#11006)
  • Förbättra cachelagringen när du skapar nya Regex-instanser (#10657) (tack @iSazonov!)
  • Förbättra bearbetningen av inbyggda PowerShell-typdata från types.ps1xml, typesV3.ps1xml och GetEvent.types.ps1xml (#10898)
  • Uppdatera PSConfiguration.ReadValueFromFile för att göra det snabbare och mer minneseffektivt (#10839)
  • Lägg till mindre prestandaförbättringar för runspace-initiering (#10569) (tack @iSazonov!)
  • Gör ForEach-Object snabbare för vanliga scenarier (#10454) och åtgärda ForEach-Object –Parallella prestandaproblem med många runspaces (#10455)

Kodrensning

  • Ändra kommentars- och elementtext så att de uppfyller Microsofts standarder (#11304)
  • Problem med rensningsformat i Compiler.cs (#10368) (tack @iSazonov!)
  • Ta bort konverteraren för oanvänd typ för CommaDelimitedStringCollection (#11000) (Tack @iSazonov!)
  • Rensningsformat i InitialSessionState.cs (#10865) (Tack @iSazonov!)
  • Kodrensning för PSSession-klass (#11001)
  • Ta bort den icke-fungerande funktionen "kör Update-Help från Get-Help när Get-Help körs för första gången" (#10974)
  • Åtgärda formatproblem (#10998) (tack @iSazonov!)
  • Rensning: Använd det inbyggda aliaset (#10882) (Tack @iSazonov!)
  • Ta bort den oanvända inställningsnyckeln ConsolePrompting och undvik att skapa onödiga strängar när du kör frågor mot ExecutionPolicy-inställningen (#10985)
  • Inaktivera uppdateringsmeddelandekontroll för dagliga versioner (#10903) (Tack @bergmeister!)
  • Återställ felsöknings-API som förlorats i #10338 (#10808)
  • Ta bort WorkflowJobSourceAdapter-referens som inte längre används (#10326) (tack @KirkMunro!)
  • Rensa COM-gränssnitt i jump list-kod genom att åtgärda PreserveSig-attribut (#9899) (tack @weltkante!)
  • Lägg till en kommentar som beskriver varför -ia inte är aliaset för den vanliga parametern -InformationAction (#10703) (tack @KirkMunro!)
  • Byt namn på InvokeCommandCmdlet.cs till InvokeExpressionCommand.cs (#10659) (Tack @kilasuit!)
  • Lägga till mindre kodrensningar relaterade till uppdateringsaviseringar (#10698)
  • Ta bort inaktuell arbetsflödeslogik från installationsskripten för fjärrkommunikation (#10320) (tack @KirkMunro!)
  • Uppdatera hjälpformatet för att använda rätt skiftläge (#10678) (Tack @tnieto88!)
  • Rensa codefactor-formatproblem som kommer i incheckningar för den senaste månaden (#10591) (tack @iSazonov!)
  • Åtgärda stavfel i beskrivningen av den experimentella funktionen PSTernaryOperator (#10586) (tack @bergmeister!)
  • Konvertera ActionPreference.Suspend-uppräkningsvärdet till ett icke-stödt, reserverat tillstånd och ta bort begränsningen för att använda ActionPreference.Ignore i inställningsvariabler (#10317) (Tack @KirkMunro!)
  • Ersätt ArrayList med List<T> för att få mer läsbar och tillförlitlig kod utan att ändra funktionalitet (#10333) (tack @iSazonov!)
  • Gör korrigeringar av kodformat till TestConnectionCommand (#10439) (tack @vexx32!)
  • Rensa AutomationEngine och ta bort extra SetSessionStateDrive-metodanrop (#10416) (tack @iSazonov!)
  • Byt namn på standardparameterSetName tillbaka till Avgränsare för ConvertTo-Csv och ConvertFrom-Csv (#10425)

Verktyg

  • Lägg till standardinställning för egenskapen SDKToUse så att den skapas i VS (#11085)
  • Install-Powershell.ps1: Lägg till parameter för att använda MSI-installation (#10921) (tack @MJECloud!)
  • Lägg till grundläggande exempel för install-powershell.ps1 (#10914) (Tack @kilasuit!)
  • Gör Install-PowerShellRemoting.ps1 hantera tom sträng i PowerShellHome-parametern (#10526) (tack @Orca88!)
  • Växla från /etc/lsb-release till /etc/os-release i install-powershell.sh (#10773) (Tack @Himura2la!)
  • Kontrollera pwsh.exe och pwsh i daglig version på Windows (#10738) (tack @centreboard!)
  • Ta bort onödig tryckning i installpsh-osx.sh (#10752)
  • Uppdatera install-powershell.ps1 för att söka efter redan installerade dagliga versioner (#10489)

Tester

  • Gör Otillförlitligt DSC-test väntar (#11131)
  • Åtgärda stringdata-test för att korrekt verifiera nycklar för hashtabeller (#10810)
  • Ta bort testmoduler (#11061) (tack @iSazonov!)
  • Öka tiden mellan återförsök av test-URL (#11015)
  • Uppdatera tester för att korrekt beskriva teståtgärder. (#10928) (Tack @romero126!)
  • Tillfälligt hoppa över det flakiga testet TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Gör händelsehanterarens läckande test stabilt (#10790)
  • Synkronisera versaler i CI YAML (#10767) (tack @RDIL!)
  • Lägg till test för händelsehanterarens läckagekorrigering (#10768)
  • Lägg till Get-ChildItem test (#10507) (tack @iSazonov!)
  • Ersätt tvetydigt språk för tester från switch till parameter för noggrannhet (#10666) (Tack @romero126!)
  • Lägg till experimentell kontroll i ForEach-Object –Parallella tester (#10354) (tack @KirkMunro!)
  • Uppdateringstester för Alpine-validering (#10428)

Förbättringar av kompilera och paket

  • Åtgärda Nuget-paketsignering för coordinated package build (#11316)
  • Uppdatera beroenden från PowerShell-galleriet och NuGet (#11323)
  • Bump Microsoft.ApplicationInsights från 2.11.0 till 2.12.0 (#11305)
  • Bump Microsoft.CodeAnalysis.CSharp från 3.3.1 till 3.4.0 (#11265)
  • Uppdateringar paket för Debian 10 och 11 (#11236)
  • Aktivera endast experimentella funktioner före RC (#11162)
  • Uppdatera lägsta macOS-version (#11163)
  • Bump NJsonSchema från 10.0.27 till 10.0.28 (#11170)
  • Uppdatera länkar i README.md och metadata.json för Preview.5 (#10854)
  • Välj filer för efterlevnadstester som ägs av PowerShell (#10837)
  • Tillåt att win7x86 msix-paketet skapas. (Intern 10515)
  • Tillåt att semantiska versioner skickas till funktionen NormalizeVersion (#11087)
  • Öka .NET Core Framework till 3.1-preview.3 (#11079)
  • Bump PSReadLine från 2.0.0-beta5 till 2.0.0-beta6 i /src/Modules (#11078)
  • Bump Newtonsoft.Json från 12.0.2 till 12.0.3 (#11037) (#11038)
  • Lägg till Debian 10-, 11- och CentOS 8-paket (#11028)
  • Ladda upp Build-Info Json-fil med fältet ReleaseDate (#10986)
  • Öka .NET Core Framework till 3.1-preview.2 (#10993)
  • Aktivera version av x86 MSIX-paket (#10934)
  • Uppdatera dotnet SDK-installationsskriptets URL i build.psm1 (#10927)
  • Bump Markdig.Signed från 0.17.1 till 0.18.0 (#10887)
  • Bump ThreadJob från 2.0.1 till 2.0.2 (#10886)
  • Uppdatera AppX-manifest- och paketeringsmodulen så att den uppfyller kraven för MS Store (#10878)
  • Uppdatera paketreferensen för PowerShell SDK till preview.5 (internt 10295)
  • Uppdatera ThirdPartyNotices.txt (#10834)
  • Öka Microsoft.PowerShell.Native till 7.0.0-preview.3 (#10826)
  • Öka antalet Microsoft.ApplicationInsights från 2.10.0 till 2.11.0 (#10608)
  • Bump NJsonSchema från 10.0.24 till 10.0.27 (#10756)
  • Lägg till MacPorts-stöd i byggsystemet (#10736) (tack @Lucius-Q-User!)
  • Bump PackageManagement från 1.4.4 till 1.4.5 (#10728)
  • Bump NJsonSchema från 10.0.23 till 10.0.24 (#10635)
  • Lägg till miljövariabel för att särskilja klient-/servertelemetri i MSI (#10612)
  • Bump PSDesiredStateConfiguration från 2.0.3 till 2.0.4 (#10603)
  • Bump Microsoft.CodeAnalysis.CSharp från 3.2.1 till 3.3.1 (#10607)
  • Uppdatera till .Net Core 3.0 RTM (#10604) (tack @bergmeister!)
  • Uppdatera MSIX-paketering så att versionen uppfyller Kraven för Windows Store (#10588)
  • Bump PowerShellGet-versionen från 2.2 till 2.2.1 (#10382)
  • Bump PackageManagement-version från 1.4.3 till 1.4.4 (#10383)
  • Uppdatera README.md och metadata.json för 7.0.0-preview.4 (Internt 10011)
  • Uppgradera .Net Core 3.0-versionen från förhandsversion 9 till RC1 (#10552) (tack @bergmeister!)
  • Åtgärda generering av ExperimentalFeature-lista (intern 9996)
  • Bump PSReadLine version från 2.0.0-beta4 till 2.0.0-beta5 (#10536)
  • Åtgärda versionsversionsskript för att ange versionstaggen
  • Uppdatera versionen av Microsoft.PowerShell.Native till 7.0.0-preview.2 (#10519)
  • Uppgradera till Netcoreapp3.0 preview9 (#10484) (tack @bergmeister!)
  • Kontrollera att det dagliga samordnade bygget vet att det är ett dagligt bygge (#10464)
  • Uppdatera den kombinerade paketversionen för att släppa de dagliga versionerna (#10449)
  • Ta bort appveyor-referens (#10445) (tack @RDIL!)
  • Bump NJsonSchema version från 10.0.22 till 10.0.23 (#10421)
  • Ta bort borttagningen av linux-x64-byggmappen eftersom vissa beroenden för Alpine behöver den (#10407)

Dokumentation och hjälpinnehåll

  • Omstrukturera ändringsloggar till en logg per version (#11165)
  • Åtgärda FWLinks för PowerShell 7 onlinehjälpdokument (#11071)
  • Uppdatera CONTRIBUTING.md (#11096) (tack @mklement0!)
  • Åtgärda installationsdokumentlänkar i README.md (#11083)
  • Lägger till exempel i install-powershell.ps1 skript (#11024) (tack @kilasuit!)
  • Korrigering av Select-String betoning och Import-DscResource i CHANGELOG.md (#10890)
  • Ta bort den inaktuella länken från powershell-beginners-guide.md (#10926)
  • Sammanfoga stabila och underhållsändringsloggar (#10527)
  • Uppdatera den .NET-version som används i build-dokument (#10775) (tack @Greg-Smulko!)
  • Ersätt länkar från MSDN till Microsoft Learn i powershell-beginners-guide.md (#10778) (tack @iSazonov!)
  • Åtgärda bruten DSC-översiktslänk (#10702)
  • Uppdatera Support_Question.md för att länka till Stack Overflow som en annan community-resurs (#10638) (tack @mklement0!)
  • Lägga till processorarkitektur i mallen för distributionsbegäran (#10661)
  • Lägga till en ny PowerShell MoL-bok till att lära dig PowerShell-dokument (#10602)
  • Uppdatera README.md och metadata för versionerna v6.1.6 och v6.2.3 (#10523)
  • Åtgärda ett stavfel i README.md (#10465) (tack @vedhasp!)
  • Lägg till en referens till PSKoans-modulen i dokumentationen om utbildningsresurser (#10369) (tack @vexx32!)
  • Uppdatera README.md och metadata.json för 7.0.0-preview.3 (#10393)