Vad är nytt i PowerShell 7.0

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

I denna version introducerar vi ett antal nya funktioner, inklusive:

  • Pipeline-parallellisering med ForEach-Object -Parallel
  • Nya operatörer:
    • Ternära operator: a ? b : c
    • Pipeline-kedjeoperatörer: || och &&
    • Noll villkorsoperatorer: ?? och ??=
  • En förenklad och dynamisk felvy och Get-Error cmdlet för enklare felundersökning
  • Ett kompatibilitetslager som gör det möjligt för användare att importera moduler i en implicit Windows PowerShell-session
  • Automatiska nyversionsnotiser
  • Möjligheten att anropa DSC-resurser direkt från PowerShell 7 (experimentellt)

För att se en fullständig lista över funktioner och fixar, se ä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 installationsinstruktionerna för ditt föredragna operativsystem Windows, macOS eller Linux.

Även om det inte är officiellt stödd har communityn också tillhandahållit paket för Arch och Kali Linux.

Anmärkning

Debian 10 och CentOS 8 stöder för närvarande inte WinRM-fjärrstyrning. För detaljer om hur du sätter upp SSH-baserad fjärrstyrning, se PowerShell fjärrhantering över SSH.

För mer information om up-to-datum om stödda operativsystem och supportlivscykel, se PowerShell Support Lifecycle.

Köra PowerShell 7

PowerShell 7 installeras i en katalog separat från Windows PowerShell. Detta gör det möjligt att köra PowerShell 7 sida vid sida med Windows PowerShell 5.1. För PowerShell 6.x är PowerShell 7 en in-place-uppgradering som tar bort PowerShell 6.x.

  • PowerShell 7 installeras till %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 på 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

Anmärkning

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 side-by-side-exekvering. Det nya exekverbara namnet för att starta PowerShell 7 är pwsh.exe. Förhandsversioner förblir på plats pwsh-preview istället för pwsh under 7-förhandsvisningskatalogen.

Förbättrad bakåtkompatibilitet med Windows PowerShell

PowerShell 7.0 markerar en övergång till .NET Core 3.1, vilket möjliggör avsevärt bättre bakåtkompatibilitet med befintliga Windows PowerShell-moduler. Detta inkluderar många moduler på Windows som kräver GUI-funktionalitet 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 .Import-Module Denna switch skapar en proxymodul i PowerShell 7 som använder en lokal Windows PowerShell-process för att implicit köra alla cmdlets som finns i den modulen. För mer information om Import-Module.

För mer information om vilka Microsoft-moduler som fungerar med PowerShell 7.0, se Modulkompatibilitetstabellen.

Parallell exekvering har lagt till ForEach-Object

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

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

Detta exempel hämtar 50 000 loggposter från 5 systemloggar på en lokal Windows-maskin:

$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

Parallellparametern specificerar skriptblocket som körs parallellt för varje indataloggnamn.

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

Använd variabeln $_ för att representera det aktuella indataobjektet i skriptblocket. Använd $using: scope för att skicka variabelreferenser till det löpande skriptblocket.

För mer information om ForEach-Object.

Operatorn Ternary

PowerShell 7.0 introducerar en ternær operator som beter sig som en förenklad if-else sats. PowerShells ternära operator är noggrant modellerad från C#:s ternära operatorsyntax:

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

Villkorsuttrycket utvärderas alltid och dess resultat omvandlas till en boolesk för att avgöra vilken gren som 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

Till exempel:

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

I detta exempel, om sökvägen finns, visas Väg existerar . Om vägen inte finns visas Väg ej hittad .

För mer information om om.

Pipeline-kedjeoperatörer

PowerShell 7 implementerar och || operatorerna && för att villkorligt kedja pipelines. Dessa operatorer kallas i PowerShell för "pipeline chain-operatorer" och liknar AND- och OR-listor i skal som bash och zsh, samt villkorsbetingade bearbetningssymboler 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.

Anmärkning

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 följer det första kommandot och det andra kommandot utförs:

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

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

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

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

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

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

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

För mer information om pipeline chain-operatörer.

Null-koalescenserings-, tilldelande- och villkorsoperatorer

PowerShell 7 inkluderar Null-coalescing-operator ??, Null-villkorstilldelning ??=, och Null-villkorliga medlemsåtkomstoperatorer ?. och ?[].

Null-koalescenserande operator??

Null-koalescensoperatorn ?? returnerar värdet av sin vänstra operand om den inte är null. Annars utvärderas den högra operanden och dess resultat returneras. Operatorn ?? utvärderar inte sin högra operand om den vänstra operanden utvärderas till ett icke-nullvärde.

$x = $null
$x ?? 100
100

I följande exempel kommer inte högeroperanden att utvärderas:

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

Null villkorlig tilldelningsoperator?? =

Den noll villkorliga tilldelningsoperatorn ??= tilldelar värdet av sin högerhandsoperand till sin vänstra operand endast om vänsterhandsoperanden utvärderar till null. Operatorn ??= utvärderar inte sin högra operand om den vänstra operanden utvärderas till ett icke-nullvärde.

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

I följande exempel utvärderas inte höger-operanden:

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

Operatörer för null villkorlig medlemsåtkomst?. och? [] (Experimentellt)

Anmärkning

Detta är en experimentell funktion som heter PSNullConditionalOperators. För mer information, se Användning av experimentella funktioner.

En noll villkorlig operator tillåter medlemsåtkomst, ?., eller elementåtkomst, ?[], till sin operand endast om den operanden utvärderas till icke-null; annars returnerar den null.

Anmärkning

Eftersom PowerShell gör att ? kan ingå i variabelnamnet krävs en formell specifikation av variabelnamnet för att använda dessa operatorer. Så det krävs att använda {} runt variabelnamnen som ${a} eller när ? är en del av variabelnamnet ${a?}.

I följande exempel returneras värdet på medlemmens egendomsstatus :

$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å liknande sätt, med hjälp ?[]av , returneras elementets värde:

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

Och när operanden är null nås inte elementet och null returneras:

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

För 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 av interaktiva och skriptfel med en ny standardvy, ConciseView. Vyerna kan väljas av användaren via preferensvariabeln $ErrorView.

Med ConciseView, om ett fel inte kommer från ett skript- eller parserfel, är det ett enradigt felmeddelande:

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

Om felet uppstår under skriptkörning eller är ett parsingfel, returnerar PowerShell ett flerradigt felmeddelande som innehåller felet, en pekare och ett felmeddelande som visar var felet finns i den raden. Om terminalen inte stödjer ANSI-färgescapesekvenser (VT100) visas inte färger.

Felvisning från ett skript

Standardvyn i PowerShell 7 är ConciseView. Den tidigare standardvyn var NormalView och du kan välja detta genom att ställa in preferensvariabeln $ErrorView.

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

Anmärkning

En ny egenskap, ErrorAccentColor, har lagts till $Host.PrivateData för att stödja ändring av accentfärgen på felmeddelandet.

En ny cmdlet Get-Error ger en komplett och detaljerad bild av det fullt kvalificerade felet när så önskas. Som standard visar cmdleten alla detaljer, inklusive inre undantag, för det senaste felet som inträffade.

Visa från Get-Error

Cmdleten Get-Error stödjer indata från pipelinen med den inbyggda variabeln $Error. Get-Error visar alla pipade fel.

$Error | Get-Error

Cmdleten Get-Error stöder parametern Nyaste , vilket låter dig ange hur många fel från den aktuella sessionen du vill visa.

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

För mer information om Get-Error.

Notis om ny version

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

Anmärkning

Uppdateringskontrollen sker under den första sessionen under en given 24-timmarsperiod. Av prestandaskäl startar uppdateringskontrollen 3 sekunder efter att sessionen börjat. Notisen visas endast vid början av efterföljande sessioner.

Som standard prenumererar PowerShell på en av två olika notifikationskanaler beroende på sin version/filial. Stödda, allmänt tillgängliga (GA) versioner av PowerShell returnerar endast notiser för uppdaterade GA-versioner. Preview and Release Candidate (RC)-utgåvor meddelar uppdateringar till preview-, RC- och GA-utgåvor.

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

  • Standard är samma sak som att inte definiera $Env:POWERSHELL_UPDATECHECK
    • GA-versioner notifierar uppdateringar av sig själva
    • Förhandsversioner/RC-versioner meddelar om uppdateringar av ga- och förhandsversioner
  • Stänger av funktionen för uppdateringsnotifikationer
  • LTS meddelar endast uppdateringar till långtidsserviceuppdateringar (LTS) GA-releaser

Anmärkning

Miljövariabeln $Env:POWERSHELL_UPDATECHECK existerar inte förrän den sätts första gången.

För att ställa in versionsnotisen endast för LTS releaser:

$Env:POWERSHELL_UPDATECHECK = 'LTS'

För att ställa in versionsnotisen till beteendet Default :

$Env:POWERSHELL_UPDATECHECK = 'Default'

För mer information om uppdateringsnotiser.

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

Anmärkning

Detta är en experimentell funktion som heter PSDesiredStateConfiguration.InvokeDscResource. För mer information, se Användning av experimentella funktioner.

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

Denna cmdlet anropar en DSC-resurs direkt, utan att skapa ett konfigurationsdokument. Med denna cmdlet kan konfigurationshanteringsprodukter hantera Windows eller Linux med hjälp av DSC-resurser. Denna cmdlet möjliggör också felsökning av resurser när DSC-motorn körs med felsökning aktiverad.

Detta kommando anropar Set-metoden för en resurs vid namn WindowsProcess och tillhandahåller de obligatoriska egenskaperna Path och Arguments för att starta den specificerade Windows-processen.

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

För mer information om Invoke-DSCResource.

Bryta förändringar och förbättringar

Brytande förändringar

  • Gör uppdateringsnotisstöd för LTS och standardkanaler (#11132)
  • Uppdatera Test-Connection att fungera mer som den i Windows PowerShell (#10697) (Tack @vexx32!)
  • Spara pengar? för ParenExpression, SubExpression och ArrayExpression (#11040)
  • Ställ in arbetskatalogen till aktuell katalog i Start-Job (#10920) (Tack @iSazonov!)
  • Se till att $PSCulture konsekvent speglar kulturförändringar under sessionen (#10138) (Tack @iSazonov!)

Motoruppdateringar och fixar

  • Förbättringar av brytpunkts-API:er för fjärrscenarier (#11312)
  • Åtgärda PowerShell-klassdefinition som läcker in i ett annat runspace (#11273)
  • Åtgärda en regression i formateringen orsakad av FirstOrDefault-primitiven som lades till i 7.0.0-Preview1 (#11258)
  • Ytterligare Microsoft-moduler att spåra i PS7 Telemetry (#10751)
  • Gör godkända funktioner icke-experimentella (#11303)
  • Uppdatera ConciseView för att använda TargetObject om tillämpligt (#11075)
  • Fixa NullReferenceException i CompletionCompleters publika metoder (#11274)
  • Fixa statuskontroll av lägenhetstråden på icke-Windows-plattformar (#11301)
  • Uppdatera inställningen av PSModulePath för att sammanfoga process- och maskinmiljövariabler (#11276)
  • Höj .NET Core till 3.1.0 (#11260)
  • Fixa detektering av $PSHOME framför $env:PATH (#11141)
  • Tillåt pwsh att ärva $env:PSModulePath och tillåt powershell.exe att starta korrekt (#11057)
  • Flytta till .NET Core 3.1 förhandsvisning 1 (#10798)
  • Refaktoreringskontroller av reparsetaggen i filsystemleverantören (#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 i ActionPreference.Break för att bryta in i felsökaren när Debug-, Error-, Information-, Progress-, Verbose- eller Varningsmeddelanden genereras (#8205) (Tack @KirkMunro!)
  • Aktivera startande kontrollpanel-tillägg i PowerShell utan att specificera .CPL tillägg. (#9828)
  • Stöd negativa siffror i -split operatör (#8960) (Tack) @ece-jacob-scott!)

Allmänna uppdateringar och fixar av cmdlet

  • Lösning för problem på Raspbian för att sätta datum för filändringar i UnixStat Experimental Feature (#11313)
  • Lägg till -AsPlainText till ConvertFrom-SecureString (#11142)
  • Tillagd WindowsPS-versionskontroll för WinCompat (#11148)
  • Fixa felrapportering i vissa WinCompat-scenarier (#11259)
  • Lägg till en inbyggd binär resolver (#11032) (Tack @iSazonov!)
  • Uppdatera beräkningen av char-bredden för att korrekt respektera CJK-chars (#11262)
  • Lägg till Unblock-File för macOS (#11137)
  • Fixa regression i Get-PSCallStack (#11210) (Tack @iSazonov!)
  • Ta bort autoloading av ScheduledJob-modulen när jag använder Job-cmdlets (#11194)
  • Lägg till OutputType i Get-Error cmdlet och bevara ursprungliga typnamn (#10856)
  • Fixa nullreferens i egenskapen SupportsVirtualTerminal (#11105)
  • Lägg till gränskontroll i Get-WinEvent (#10648) (Tack) @iSazonov!)
  • Fixa kommandons runtime så att StopUpstreamCommandsException inte fylls i -ErrorVariable (#10840)
  • Sätt utdatakodningen till [Console]::OutputEncoding för inbyggda kommandon (#10824)
  • Stöd flerradskodblock i exempel (#10776) (Tack @Greg-Smulko!)
  • Lägg till Culture-parametern till Select-String cmdlet (#10943) (Tack @iSazonov!)
  • Fixa Start-Job fungerande katalogsökväg med efterföljande backslash (#11041)
  • ConvertFrom-Json: Unwrap collections som standard (#10861) (Tack @danstur!)
  • Använd kasuskänslig Hashtable för Group-Object cmdlet med -CaseSensitive och -AsHashtable switchar (#11030) (Tack @vexx32!)
  • Hantera undantag om uppräkning av filer misslyckas vid återuppbyggnad av sökväg för att ha korrekt fodral (#11014)
  • Fixa ConciseView för att visa Aktivitet istället för myCommand (#11007)
  • Tillåt webb-cmdlets att ignorera HTTP-felstatusar (#10466) (Tack @vdamewood!)
  • Fixa piping av mer ä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]::Value som $null (#10957)
  • Ta bort fästen från IPv6-adressen för SSH-fjärrkontroll (#10968)
  • Fixa krasch om kommandot som skickas till pwsh bara är blank (#10977)
  • Lagt till plattformsoberoende Get-Clipboard och Set-Clipboard (#10340)
  • Fixa att ursprunglig sökväg för filsystemobjektet inte ska ha extra snedslängd (#10959)
  • Support$null för ConvertTo-Json (#10947)
  • Lägg till tillbaka Out-Printer-kommandot på Windows (#10906)
  • Fixa Start-Job -WorkingDirectory med tomrum (#10951)
  • Returnera standardvärdet när du får null för en inställning i PSConfiguration.cs (#10963) (Tack @iSazonov!)
  • Hantera IO-undantaget som icke-terminerande (#10950)
  • Lägg till GraphicalHost-assembler för att aktivera Out-GridView, Show-Command och Get-Help -ShowWindow (#10899)
  • Ta ComputerName via pipeline i Get-HotFix (#10852) (Tack @kvprasoon!)
  • Fixa tabb-komplettering för parametrar så att vanliga parametrar visas som tillgängliga (#10850)
  • Fixa GetCorrectCasedPath() så att du först kontrollerar om några systemfilposter returneras innan du anropar First() (#10930)
  • Ställ in arbetskatalogen till aktuell katalog i Start-Job (#10920) (Tack @iSazonov!)
  • Ändra TabExpansion2 så att den inte kräver -CursorColumn och behandla som $InputScript.Length (#10849)
  • Hantera fall där värden kanske inte returnerar rader eller kolumner på skärmen (#10938)
  • Fixa användningen av accentfärger för värdar som inte stödjer dem (#10937)
  • Lägg till tillbaka Update-List-kommandot (#10922)
  • Uppdatera FWLink-ID för Clear-RecycleBin (#10925)
  • Under tabb-kompletteringen, hoppa över filen om du inte kan läsa filattributen (#10910)
  • Lägg till Clear-RecycleBin för Windows (#10909)
  • Lägg till $env:__SuppressAnsiEscapeSequences för att kontrollera om VT-escape-sekvensen ska ha utgången (#10814)
  • Lägg till -NoEmphasize parameter 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ändbar i applikationer som hostar PowerShell (#10587)
  • Använd mer effektiv utvärderingsordning i LanguagePrimitives.IsNullLike() (#10781) (Tack) @vexx32!)
  • Förbättra hanteringen av mixed-collection piped input och piped streams 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!)
  • Fixa Get-Content -ReadCount 0-beteende när -TotalCount är inställt (#10749) (Tack @eugenesmlv!)
  • Felmeddelande om rewordåtkomst nekas i Get-WinEvent (#10639) (Tack @iSazonov!)
  • Aktivera tabb-komplettering för variabeltilldelning som är enum- eller typbegränsad (#10646)
  • Ta bort oanvänd SourceLength-avskärmningsegenskap som orsakar formateringsproblem (#10765)
  • Lägg till -Delimiter parameter i ConvertFrom-StringData (#10665) (Tack @steviecoaster!)
  • Lägg till positionsparameter för ScriptBlock när man 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$\-vägar till filsystemleverantör (#10674)
  • Lägg till den saknade tokentexten för TokenKind.QuestionMark i parsern (#10706)
  • Ställ in aktuell arbetskatalog för varje ForEach-Object -Parallel körande skript till samma plats som det anropande skriptet. (#10672)
  • Byt ut api-ms-win-core-file-l1-2-2.dll mot Kernell32.dll för FindFirstStreamW och FindNextStreamW API:er (#10680) (Tack @iSazonov!)
  • Hjälp med att formatera skriptet för att bli mer StrictMode-tolerant (#10563)
  • Lägg till -SecurityDescriptorSDDL parameter till New-Service (#10483) (Tack @kvprasoon!)
  • Ta bort informationsutdata, konsolidera pinganvändning i Test-Connection (#10478) (Tack @vexx32!)
  • Läs särskilda reparsepunkter utan att använda dem (#10662) (Tack @iSazonov!)
  • Direkt Clear-Host utgång till terminal (#10681) (Tack @iSazonov!)
  • Lägg till ny rad för gruppering med Format-Table och -Property (#10653)
  • Ta bort [ValidateNotNullOrEmpty] från -InputObject på Get-Random för att tillåta tom sträng (#10644)
  • Gör algoritmen för strängavstånd som är okänslig för för- och enkelt (#10549) (Tack @iSazonov!)
  • Fixa nullreferensundantaget i ForEach-Object -Parallel indatabehandling (#10577)
  • Lägg till PowerShell-grupppolicydefinitioner (#10468)
  • Uppdatera konsolvärden för att stödja XTPUSHSGR/XTPOPSGR VT-kontrollsekvenser som används i komposabilitetsscenarier. (#10208)
  • Lägg till WorkingDirectory-parametern i Start-Job (#10324) (Tack @davinci26!)
  • Ta bort händelsehanteraren som orsakade att brytpunktsändringar felaktigt replikerades till värdens runspace-debugger (#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!)
  • Fixa fel utdata för New-Service i variabeltilldelning och -OutVariable (#10444) (Tack @kvprasoon!)
  • Åtgärda globala verktygsproblem kring avslutskod, kommandoradsparametrar och sökväg med mellanslag (#10461)
  • Fixa rekursion i OneDrive – ändra FindFirstFileEx() till att använda SafeFindHandle-typen (#10405)
  • Hoppa över automatisk laddning av PSReadLine på Windows om NVDA-skärmläsaren är aktiv (#10385)
  • Öka versioner med PowerShell-moduler till 7.0.0.0 (#10356)
  • Lägg till att kasta ett felmeddelande i Add-Type om en typ med samma namn redan finns (#9609) (Tack @iSazonov!)

Performance

  • Undvik att använda closure i Parser.SaveError (#11006)
  • Förbättra caching när du skapar nya Regex-instanser (#10657) (Tack @iSazonov!)
  • Förbättra behandlingen av PowerShell:s inbyggda 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 initialisering av runspace (#10569) (Tack @iSazonov!)
  • Gör ForEach-Object snabbare för dess vanliga scenarier (#10454) och åtgärda ForEach-Object -Parallel prestandaproblem med många runspaces (#10455)

Rensning av kod

  • Ändra kommentar och elementtext för att uppfylla Microsofts standarder (#11304)
  • Städstilproblem i Compiler.cs (#10368) (Tack @iSazonov!)
  • Ta bort den oanvända typomvandlaren för CommaDelimitedStringCollection (#11000) (Tack @iSazonov!)
  • Städstil i InitialSessionState.cs (#10865) (Tack @iSazonov!)
  • Kodrensning för PSSession-klassen (#11001)
  • Ta bort funktionen 'kör Update-Help Get-Help när Get-Help körs för första gången' (#10974)
  • Fixa stilproblem (#10998) (Tack @iSazonov!)
  • Städning: använd det inbyggda typaliaset (#10882) (Tack @iSazonov!)
  • Ta bort den oanvända inställningsnyckeln ConsolePrompting och undvik onödig strängskapande vid sökning i ExecutionPolicy-inställningen (#10985)
  • Inaktivera uppdateringsnotiser för dagliga byggen (#10903) (Tack) @bergmeister!)
  • Återställ felsöknings-API:et förlorat i #10338 (#10808)
  • Ta bort referensen till WorkflowJobSourceAdapter som inte längre används (#10326) (Tack @KirkMunro!)
  • Rensa upp COM-gränssnitt i hopplistkoden genom att fixa PreserveSig-attribut (#9899) (Tack @weltkante!)
  • Lägg till en kommentar som beskriver varför -ia inte är aliaset för -InformationAction vanliga parameter (#10703) (Tack @KirkMunro!)
  • Byt namn på InvokeCommandCmdlet.cs till InvokeExpressionCommand.cs (#10659) (Tack) @kilasuit!)
  • Lägg till mindre kodrensningar relaterade till uppdateringsnotiser (#10698)
  • Ta bort föråldrad arbetsflödeslogik från fjärrinställningsskripten (#10320) (Tack @KirkMunro!)
  • Uppdatera hjälpformatet för att använda korrekt case (#10678) (Tack @tnieto88!)
  • Städar upp CodeFactor-liknande problem som kommer in commits för senaste månaden (#10591) (Tack @iSazonov!)
  • Rätta stavfel i beskrivningen av PSTernaryOperator-experimentfunktionen (#10586) (Tack @bergmeister!)
  • Konvertera ActionPreference.Suspend enumerationsvärdet till ett icke-stödd, reserverat tillstånd och ta bort begränsningen av att använda ActionPreference.Ignore i preferensvariabler (#10317) (Tack @KirkMunro!)
  • Byt ut ArrayList mot List<T> för att få mer läsbar och pålitlig kod utan att ändra funktionalitet (#10333) (Tack @iSazonov!)
  • Gör kodstilsfixar 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)

Tools

  • Lägg till standardinställning för SDKToUse-egenskapen så att den bygger i VS (#11085)
  • Install-Powershell.ps1: Lägg till parameter för att använda MSI-installationen (#10921) (Tack) @MJECloud!)
  • Lägg till grundläggande exempel för install-powershell.ps1 (#10914) (Tack) @kilasuit!)
  • Låt Install-PowerShellRemoting.ps1 hantera en tom sträng i PowerShellHome-parametern (#10526) (Tack @Orca88!)
  • Byt från /etc/lsb-release till /etc/os-release i install-powershell.sh (#10773) (Tack) @Himura2la!)
  • Kolla pwsh.exe och pwsh i daglig version på Windows (#10738) (Tack @centreboard!)
  • Ta bort onödigt kran i installpsh-osx.sh (#10752)
  • Uppdatera install-powershell.ps1 för att kontrollera om redan installerad daglig version (#10489)

Tester

  • Gör opålitligt DSC-test påstående (#11131)
  • Fixa stringdata-test för att korrekt validera nycklar i hashtabeller (#10810)
  • Avlastningstestmoduler (#11061) (Tack @iSazonov!)
  • Öka tiden mellan testningsförsök av URL (#11015)
  • Uppdatera tester för att noggrant beskriva teståtgärder. (#10928) (Tack @romero126!)
  • Tillfällig hoppa över det opålitliga testet TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
  • Gör testet för händelsehanterarens läckage stabilt (#10790)
  • Synkronisera versaler i CI YAML (#10767) (Tack @RDIL!)
  • Lägg till test för händelsehanterarens läckagefix (#10768)
  • Lägg till Get-ChildItem test (#10507) (Tack) @iSazonov!)
  • Byt ut tvetydigt språk för tester från switch till parameter för noggrannhet (#10666) (Tack @romero126!)
  • Lägg till experimentell kontroll till ForEach-Object -Parallel tester (#10354) (Tack @KirkMunro!)
  • Uppdatera tester för Alpine-validering (#10428)

Bygg- och paketförbättringar

  • Fixa Nuget-paketsignering för Coordinated Package-build (#11316)
  • Uppdatera beroenden från PowerShell Gallery och NuGet (#11323)
  • Flytta Microsoft.ApplicationInsights från 2.11.0 till 2.12.0 (#11305)
  • Flytta Microsoft.CodeAnalysis.CSharp från 3.3.1 till 3.4.0 (#11265)
  • Uppdaterar paket för Debian 10 och 11 (#11236)
  • Endast aktivera experimentella funktioner före RC (#11162)
  • Uppdatera macOS minsta version (#11163)
  • Flytta NJsonSchema från 27.10.07 till 28.10.00 (#11170)
  • Uppdaterar länkar i README.md och metadata.json för Preview.5 (#10854)
  • Välj filerna för efterlevnadstester som ägs av PowerShell (#10837)
  • Tillåt att win7x86 msix-paketet byggs. (Intern 10515)
  • Tillåt att semantiska versioner skickas till NormalizeVersion-funktionen (#11087)
  • Flytta .NET core-ramverket till 3.1-preview.3 (#11079)
  • Höj PSReadLine från 2.0.0-beta5 till 2.0.0-beta6 i /src/Modules (#11078)
  • Flytta 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)
  • Flytta .NET:s kärnramverk till 3.1-preview.2 (#10993)
  • Aktivera byggning av x86 MSSIX-paketet (#10934)
  • Uppdatera dotnet SDK:s installationsskript-URL i build.psm1 (#10927)
  • Bump Markdig. Signerad från 0.17.1 till 0.18.0 (#10887)
  • Flytta ThreadJob från 2.0.1 till 2.0.2 (#10886)
  • Uppdatera AppX Manifest och Paketeringsmodul för att uppfylla MS Store-krav (#10878)
  • Uppdatera paketreferens för PowerShell SDK till preview.5 (Internal 10295)
  • Uppdatering ThirdPartyNotices.txt (#10834)
  • Bump Microsoft.PowerShell.Native till 7.0.0-preview.3 (#10826)
  • Flytta Microsoft.ApplicationInsights från 2.10.0 till 2.11.0 (#10608)
  • Flytta 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)
  • Flytta NJsonSchema från 10.0.23 till 10.0.24 (#10635)
  • Lägg till miljövariabel för att differentiera klient/server-telemetri i MSI (#10612)
  • Höj PSDesiredStateConfiguration från 2.0.3 till 2.0.4 (#10603)
  • Flytta Microsoft.CodeAnalysis.CSharp från 3.2.1 till 3.3.1 (#10607)
  • Uppdatering till .Net Core 3.0 RTM (#10604) (Tack @bergmeister!)
  • Uppdatera MSIX-paketeringen så att versionen uppfyller Windows Store-kraven (#10588)
  • Flytta PowerShellGet-versionen från 2.2 till 2.2.1 (#10382)
  • Bump PackageManagement-versionen från 1.4.3 till 1.4.4 (#10383)
  • Uppdatera README.md och metadata.json för 7.0.0-preview.4 (Intern 10011)
  • Uppgradera .Net Core 3.0-versionen från Preview 9 till RC1 (#10552) (Tack @bergmeister!)
  • Fixa ExperimentalFeature-listgenerering (Intern 9996)
  • Höj PSReadLine-versionen från 2.0.0-beta4 till 2.0.0-beta5 (#10536)
  • Fixa release-byggskript för att sätta release-taggen
  • Uppdatera versionen av Microsoft.PowerShell.Native till 7.0.0-preview.2 (#10519)
  • Uppgradera till Netcoreapp3.0 preview9 (#10484) (Tack @bergmeister!)
  • Se till att det dagliga koordinerade bygget är att det är ett dagligt bygge (#10464)
  • Uppdatera den kombinerade paketversionen för att släppa de dagliga versionerna (#10449)
  • Ta bort appveyorreferens (#10445) (Tack @RDIL!)
  • Flytta NJsonSchema-versionen från 10.0.22 till 10.0.23 (#10421)
  • Ta bort raderingen av linux-x64 build-mappen eftersom vissa beroenden för Alpine kräver det (#10407)

Dokumentation och hjälpinnehåll

  • Refaktorera ändringsloggar till en logg per release (#11165)
  • Fixa FWLinks för PowerShell 7 online-hjälpsdokument (#11071)
  • Uppdatering CONTRIBUTING.md (#11096) (Tack @mklement0!)
  • Fixa installationsdokumentationslä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 föråldrade länken från powershell-beginners-guide.md (#10926)
  • Sammanslagningsstall och serviceloggar för ändringar (#10527)
  • Uppdateringen använde .NET-versionen i byggdokumenten (#10775) (Tack @Greg-Smulko!)
  • Ersätt länkar från MSDN till Microsoft Learn i powershell-beginners-guide.md (#10778) (Tack @iSazonov!)
  • Fixa trasig DSC-översikt länk (#10702)
  • Uppdatera Support_Question.md för att länka till Stack Overflow som en annan communityresurs (#10638) (Tack @mklement0!)
  • Lägg till processorarkitektur i mall för distributionsförfrågningar (#10661)
  • Lägg till ny PowerShell MoL-bok i Learning PowerShell-dokumenten (#10602)
  • Uppdatera README.md och metadata för v6.1.6 och v6.2.3 (#10523)
  • Rätta ett stavfel i README.md (#10465) (Tack @vedhasp!)
  • Lägg till en referens till PSKoans-modulen i Learning Resources-dokumentationen (#10369) (Tack @vexx32!)
  • Uppdatera README.md och metadata.json för 7.0.0-preview.3 (#10393)