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 är utformad för att hantera heterogena miljöer och hybridmoln.
I den här versionen introducerar vi ett antal nya funktioner, inklusive:
- Pipelineparallellisering med
ForEach-Object -Parallel - Nya operatorer:
- Ternary-operatorn:
a ? b : c - Pipelinekedjeoperatorer:
||och&& - Villkorsoperatorer för null:
??och??=
- Ternary-operatorn:
- En förenklad och dynamisk felvy och
Get-Errorcmdlet 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 ditt 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 i
%programfiles%\PowerShell\7 - Mappen
%programfiles%\PowerShell\7läggs till i$env:PATH
PowerShell 7-installationspaketet uppgraderar tidigare versioner av PowerShell 6.x:
- PowerShell 6.x i Windows:
%programfiles%\PowerShell\6ersätts av%programfiles%\PowerShell\7 - Linux:
/opt/microsoft/powershell/6ersätts av/opt/microsoft/powershell/7 - macOS:
/usr/local/microsoft/powershell/6ersä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 förblir på plats som pwsh-preview i 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-Commandsamt många rollhanteringsmoduler som levereras som en del av Windows.
För Windows läggs en ny växelparameter 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 ingår 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 utifrån operatorsyntaxen för C#-operatören:
<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 utvärderas härnäst:
- Uttrycket
<if-true>körs om uttrycket<condition>är sant - Uttrycket
<if-false>körs om uttrycket<condition>ä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äg. 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 "pipelinekedjeoperatorer" 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 interna 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.
Operatorer med 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 operande om den inte är null.
Annars utvärderar den den högra operanden och returnerar resultatet. Operatorn ?? utvärderar inte den högra operanden om den vänstra operanden 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 den högra operanden till den vänstra operanden om den vänstra operanden utvärderas till null. Operatorn ??= utvärderar inte den högra operanden om den vänstra operanden 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-operatorer för villkorlig medlemsåtkomst ?. 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 operand 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. Det är därför nödvändigt att 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 operand ä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 visningen 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ändare via inställningsvariabeln $ErrorView.
Om ett fel inte kommer från ett skript- eller parsningsfel med ConciseView är det ett felmeddelande med en rad:
Get-Childitem -Path c:\NotReal
Get-ChildItem: Cannot find path 'C:\NotReal' because it does not 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.

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 för att $Host.PrivateData ge stöd för att ändra 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.

Cmdleten Get-Error stöder indata från pipelinen med hjälp av den inbyggda variabeln $Error.
Get-Error visar alla rörfel.
$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 visa.
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 uppdateringsmeddelanden 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 endast i början av efterföljande sessioner.
Som standard prenumererar PowerShell på en av två olika meddelandekanaler beroende på dess version/gren. Allmänt tillgängliga versioner av PowerShell returnerar endast meddelanden för uppdaterade GA-versioner. Förhandsversioner och release candidate-versioner (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 ga- och förhandsversioner
- Inaktivera inaktiverar funktionen för uppdateringsavisering
- LTS meddelar endast uppdateringar av långfristiga serviceversioner (LTS) 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 endast versionsmeddelandet för LTS versioner:
$Env:POWERSHELL_UPDATECHECK = 'LTS'
Så här anger du versionsmeddelandet till beteendet Default :
$Env:POWERSHELL_UPDATECHECK = 'Default'
Mer information om uppdateringsmeddelanden.
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 obligatoriska egenskaper för 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 så att uppdateringsmeddelandet stöder 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 att PowerShell-klassdefinitionen läcker till en annan Runspace (#11273)
- Åtgärda en regression i formateringen som orsakas av firstordefault-primitiven 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 kontroll av status för lägenhetstrådar på icke-Windows-plattformar (#11301)
- Uppdateringsinställningen PSModulePath för att sammanfoga miljövariablerna för processer och datorer (#11276)
- Bump .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 förhandsversion 1 (#10798)
- Refactor reparse tag checkar in file system provider (#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 sig in i felsökaren när felsöknings-, fel-, informations-, förlopps-, utförliga- eller varningsmeddelanden genereras (#8205) (tack @KirkMunro!)
- Aktivera start av kontrollpanelens tillägg i PowerShell utan att ange .CPL tillägg. (#9828)
- Stöd för negativa tal i operatorn -split (#8960) (Tack @ece-jacob-scott!)
Allmänna cmdletar 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 kommandokörningen så att StopUpstreamCommandsException inte fylls i i -ErrorVariable (#10840)
- Ange utdatakodningen till [Console]::OutputEncoding för interna kommandon (#10824)
- Stöd för flerradskodblock i exempel (#10776) (tack @Greg-Smulko!)
- Lägg till culture-parametern 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 när återskapande av sökvägen har rätt hölje (#11014)
- Korrigera ConciseView för att visa aktivitet i stället för myCommand (#11007)
- Tillåt att webb-cmdletar ignorerar 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]::Value 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)
- Korrigera 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 tomt utrymme (#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 tabbifyllning för parametrar så att vanliga parametrar visas som tillgängliga (#10850)
- Korrigera 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 skiftläge där värden inte får returnera 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 kommandot (#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 till
$env:__SuppressAnsiEscapeSequencesför att styra om VT-escape-sekvens ska visas i 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 piped-indata för blandad samling och piped-strömmar av indata i Format-Hex (#8674) (Tack @vexx32!)
- Använd typkonvertering i SSHConnection-hashtabeller 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 tabbifyllning för variabeltilldelning som är uppräknings- eller typbegränsad (#10646)
- Ta bort oanvänd sourceLength-fjärrkommunikationsegenskap 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 \wsl$\ sökvägar till filsystemprovidern (#10674)
- Lägg till tokentexten som saknas för TokenKind.QuestionMark i parser (#10706)
- Ange den aktuella arbetskatalogen för varje ForEach-Object –Parallellkörningsskript till 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älpformateringsskriptet så att det blir 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!)
- Dirigera Clear-Host utdata till terminalen (#10681) (tack @iSazonov!)
- Lägg till ny rad 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 gjorde att brytpunktsändringar felaktigt replikeras till felsökaren för värdkörningsutrymmet (#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 SafeFindHandle-typen (#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 det redan finns en typ med samma namn (#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 initiering av runspace (#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)
Rensning av kod
- Ändra kommentars- och elementtext så att de uppfyller Microsofts standarder (#11304)
- Problem med rensningsformat i Compiler.cs (#10368) (tack @iSazonov!)
- Ta bort den oanvända typkonverteraren för CommaDelimitedStringCollection (#11000) (Tack @iSazonov!)
- Rensningsformat i InitialSessionState.cs (#10865) (tack @iSazonov!)
- Rensning av kod för PSSession-klass (#11001)
- Ta bort 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 typaliaset (#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 snabblistans 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)
- Öka antalet 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 en daglig version (#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 docs.microsoft.com 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ägg till en ny PowerShell MoL-bok för 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)