Nyheter i PowerShell 7.3

PowerShell 7.3 är nästa stabila version som bygger på .NET 7.0.

PowerShell 7.3 innehåller följande funktioner, uppdateringar och icke-bakåtkompatibla ändringar.

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

  • I den här versionen har Windows-API:er uppdaterats eller tagits bort för efterlevnad, vilket innebär att PowerShell 7.3 inte körs på Windows 7. Även om Windows 7 inte längre stöds kan tidigare versioner köras på Windows 7.
  • PowerShell Direct för Hyper-V stöds endast i Windows 10, version 1809 och senare.
  • Test-Connection är bruten på grund av en avsiktlig icke-bakåtkompatibel ändring i .NET 7. Den spåras av #17018
  • Lägg till clean blockering i skriptblock som peer till begin, processoch end för att tillåta enkel resursrensning (#15177)
  • Ändra standardvärdet för $PSStyle.OutputRendering till Värd
  • Gör Out-String och Out-File behåll strängindata oförändrade (#17455)
  • Flytta typdatadefinitionen för System.Security.AccessControl.ObjectSecurity till modulen Microsoft.PowerShell.Security (#16355) (tack @iSazonov!)
    • Innan den här ändringen behöver en användare inte uttryckligen importera modulen Microsoft.PowerShell.Security för att använda kodegenskaperna som definierats för en instans av System.Security.AccessControl.ObjectSecurity.
    • Efter den här ändringen måste en användare uttryckligen importera Modulen Microsoft.PowerShell.Security för att kunna använda dessa kodegenskaper och kodmetoder.

Förbättringar av flikens slutförande

  • PowerShell 7.3 innehåller PSReadline 2.2.6, vilket möjliggör Predictive IntelliSense som standard. Mer information finns i about_PSReadLine.
  • Åtgärda flikslut i skriptblocket som angetts ValidateScriptAttributeför . (#14550) (Tack @MartinGC94!)
  • Fliken har slutförts för loopetiketter efter break/continue (#16438) (Tack @MartinGC94!)
  • Förbättra hashtable-slutförande i flera scenarier (#16498) (tack @MartinGC94!)
    • Parametersplatting
    • Argumentparameter för Invoke-CimMethod
    • FilterHashtable-parameter för Get-WinEvent
    • Egenskapsparameter för CIM-cmdletar
    • Tar bort dubbletter från scenarier för medlemsavslut
  • Stöd för snedstreck i slutförande av nätverksresurs (UNC-sökväg) (#17111) (tack @sba923!)
  • Förbättra automatisk komplettering av medlemmar (#16504) (tack @MartinGC94!)
  • Prioritera ValidateSet-slutföranden över Uppräkningar för parametrar (#15257) (tack @MartinGC94!)
  • Lägg till typinferensstöd för generiska metoder med typparametrar (#16951) (Tack @MartinGC94!)
  • Förbättra typinferens och slutföranden (#16963) (Tack @MartinGC94!)
    • Tillåter att metoder visas i slutföranderesultat för ForEach-Object -MemberName
    • Förhindrar slutförande av uttryck som returnerar tomrum som ([void](""))
    • Tillåter att icke-standardklasskonstruktorer visas när klassavslutningen baseras på AST
  • Förbättra typinferensen för $_ (#17716) (Tack @MartinGC94!)
  • Åtgärda typinferens för ICollection (#17752) (Tack @MartinGC94!)
  • Förhindra att klammerparenteser tas bort när du slutför variabler (#17751) (tack @MartinGC94!)
  • Lägg till slutförande för indexuttryck för ordlistor (#17619) (tack @MartinGC94!)
  • Åtgärda typavslut för attributtoken (#17484) (Tack @MartinGC94!)
  • Förbättra slutförande av dynamisk parameterflik (#17661) (tack @MartinGC94!)
  • Undvik att binda positionsparametrar när du slutför parametern framför värdet (#17693) (Tack @MartinGC94!)

Förbättrad felhantering

  • Ange $? korrekt för kommandouttryck med omdirigeringar (#16046)
  • Åtgärda ett gjutningsfel när du använder $PSNativeCommandUseErrorActionPreference (#15993)
  • Gör det interna kommandofelshanteringen valfritt att respektera ErrorActionPreference (#15897)
  • Ange den körbara sökvägen som TargetObject för slutkoden ErrorRecord (#16108) (tack@rkeithhill!)

Förbättringar av sessioner och fjärrkommunikation

  • Lägg till -Options i PSRP via SSH-kommandon för att tillåta direktöverföring av OpenSSH-alternativ (#12802) (tack @BrannenGH!)
  • Lägg till -ConfigurationFile parameter för pwsh att tillåta att en ny process startas med sessionskonfigurationen som definierats i en .pssc fil (#17447)
  • Lägg till stöd för användning New-PSSessionConfigurationFile på plattformar som inte är Windows -plattformar (#17447)

Uppdaterade cmdletar

  • Lägg till -HttpVersion parameter i webb-cmdletar (#15853) (tack @hayhay27!)
  • Lägg till stöd för webb-cmdletar för öppna indatataggar (#16193) (Tack @farmerau!)
  • Korrigering ConvertTo-Json -Depth för att tillåta högst 100 (#16197) (tack @KevRitchie!)@rkeithhill!)
  • Förbättra variabelhanteringen när du anropar Invoke-Command med uttrycket (#16113) $using: (Tack@dwtaber!)
  • Lägg till -StrictModeInvoke-Command för att tillåta att strikt läge anges när kommandot anropas lokalt (#16545) (tack @Thomas-Yu!)
  • Lägg till clean blockering i skriptblock som peer till begin, processoch end för att tillåta enkel resursrensning (#15177)
  • Lägg till -Amended switch till Get-CimClass cmdlet (#17477) (Tack @iSazonov)
  • Har ändrats ConvertFrom-Json -AsHashtable för att använda ordnad hashtable (#17405)
  • ANSI-escapesekvenser har tagits bort i strängar innan de skickas till Out-GridView (#17664)
  • Parametern Milliseconds har lagts till i New-TimeSpan (#17621) (tack @NoMoreFood!)
  • Visa valfria parametrar när du visar metoddefinitioner och överlagringar (#13799) (Tack @eugenesmlv!)
  • Tillåt att kommandon fortfarande körs även om den aktuella arbetskatalogen inte längre finns (#17579)
  • Lägg till stöd för HTTPS med Set-AuthenticodeSignature -TimeStampServer (#16134) (tack @Ryan-Hutchison-USAF!)
  • Rendera decimaltal i en tabell med aktuell kultur (#17650)
  • Lägg till typaccelerator ordnad för OrderedDictionary (#17804) (tack @fflaten!)
  • Lägg till find.exe i äldre argumentbindningsbeteende för Windows (#17715)
  • Lägg till -noprofileloadtime växel till pwsh (#17535) (Tack @rkeithhill!)

En fullständig lista över ändringar finns i Ändringsloggen på GitHub-lagringsplatsen.

Experimentella funktioner

I PowerShell 7.3 blev följande experimentella funktioner vanliga:

  • PSAnsiRenderingFileInfo – Den här funktionen lägger till $PSStyle.FileInfo medlemmen och aktiverar färgning av specifika filtyper.

  • PSCleanBlock – Lägger till clean blockering i skriptblock som peer till begin, processoch end för att möjliggöra enkel resursrensning.

  • PSAMSIMethodInvocationLogging – Utökar de data som skickas till AMSI för inspektion så att alla anrop av .NET-metodmedlemmar inkluderas.

  • PSNativeCommandArgumentPassing – PowerShell använder nu egenskapen ArgumentList för StartProcessInfo-objektet i stället för den gamla mekanismen för att rekonstruera en sträng när en intern körbar fil anropas.

    PowerShell 7.3.1 lägger sqlcmd.exe till i listan över interna kommandon i Windows som använder Legacy formatet för argumentöverföring.

  • PSExec – Lägger till den nya Switch-Process cmdleten (alias exec) för att tillhandahålla exec kompatibilitet för icke-Windows-system.

    PowerShell 7.3.1 ändrade aliaset exec till en funktion som omsluter Switch-Process. Med funktionen kan du skicka parametrar till det interna kommandot som felaktigt kan vara bundet till parametern WithCommand .

PowerShell 7.3 introducerar följande experimentella funktioner:

  • PSNativeCommandErrorActionPreference – Lägger till variabeln $PSNativeCommandUseErrorActionPreference för att aktivera fel som genereras av interna kommandon som PowerShell-fel.

PowerShell 7.3 tog bort följande experimentella funktioner:

  • PSNativePSPathResolution experimentell funktion stöds inte längre.
  • PSStrictModeAssignment experimentell funktion stöds inte längre.

Mer information om experimentella funktioner finns i Använda experimentella funktioner.