Condividi tramite


Novità di PowerShell 7.4

PowerShell 7.4.7 include le funzionalità, gli aggiornamenti e le modifiche di rilievo seguenti. PowerShell 7.4.7 è basato su .NET 8.0.12.

Per un elenco completo delle modifiche, vedere l' CHANGELOG nel repository GitHub.

Modifiche di rilievo

  • Le immagini Docker di Nano Server non sono disponibili per questa versione
  • Aggiunto il parametro ProgressAction ai Parametri Comuni
  • Aggiornare alcune API di PowerShell per generare ArgumentException anziché ArgumentNullException quando l'argomento è una stringa vuota (#19215) (grazie @xtqqczze!)
  • Rimuovere il codice correlato a #requires -pssnapin (#19320)
  • Test-Json ora usa JsonSchema.NET anziché Newtonsoft.Json.Schema.
    • Con questa modifica, Test-Json non supporta più gli schemi precedenti della bozza 4. (#18141) (grazie @gregsdennis!). Per altre informazioni sugli schemi JSON, vedere documentazione dello schema JSON. Questo interrompe anche Test-Json per i file JSON e JSONC con commenti.
    • ConvertFrom-Json supporto usa ancora Newtonsoft.Json.Schema in modo da poter convertire i file JSON con commenti.
  • L'output di Test-Connection ora include informazioni più dettagliate sui test di connessione TCP
  • .NET ha introdotto le modifiche che hanno interessato Test-Connection. Il cmdlet restituisce ora un errore relativo alla necessità di usare sudo nelle piattaforme Linux quando si usano dimensioni del buffer personalizzate (#20369)
  • La funzionalità sperimentale PSNativeCommandPreserveBytePipe è ora mainstream. PowerShell mantiene ora i dati del flusso di byte quando si reindirizza il flusso stdout stdout di un comando nativo a un file o quando si esegue il piping dei dati del flusso di byte nel flusso stdin di un comando nativo.
  • Modificare la modalità di gestione dei percorsi relativi in quando si usa il parametro RelativeBasePath (#19755) (grazie
  • Rimuovere il codice PSv2 inutilizzato: rimuove la funzione TabExpansion (#18337)

Aggiornamenti del programma di installazione

Il pacchetto MSI di Windows offre ora un'opzione per disabilitare i dati di telemetria di PowerShell durante l'installazione. Per altre informazioni, vedere Installare il pacchetto MSI dalla riga di comando.

Versioni aggiornate di PSResourceGet e PSReadLine

PowerShell 7.4 includono Microsoft.PowerShell.PSResourceGet v1.0.1. Questo modulo è installato side-by-side con PowerShellGet v2.2.5 e PackageManagement v1.4.8.1. Per altre informazioni, vedere la documentazione per Microsoft.PowerShell.PSResourceGet.

PowerShell 7.4 adesso include PSReadLine v2.3.4. Per altre informazioni, vedere la documentazione per PSReadLine.

Miglioramenti del completamento tramite tab

Molti grazie a @MartinGC94 e altri per tutto il loro lavoro per migliorare il completamento delle schede.

  • Correzione del problema durante il completamento del primo comando in uno script con un'espressione di matrice vuota (#18355)
  • Correzione del completamento dell'argomento posizionale (#17796)
  • Classificare in ordine di priorità il set di parametri predefinito quando si completano gli argomenti posizionali (#18755)
  • Migliorare la pseudo binding per i parametri dinamici (#18030)
  • Migliorare l'inferenza dei tipi di chiavi hashtable (#17907)
  • Correzione dell'errore di inferenza del tipo per istruzioni di ritorno vuote (#18351)
  • Migliorare l'inferenza dei tipi per Get-Random (#18972)
  • Correggere l'inferenza del tipo per tutte le variabili di ambito (#18758)
  • Migliorare l'enumerazione dei tipi dedotti nella pipeline (#17799)
  • Aggiungere il completamento dei valori nelle comparazioni quando si confrontano le enumerazioni (#17654)
  • Aggiungere l'assegnazione completa delle proprietà per le enumerazioni (#19178)
  • Correzione del completamento per le proprietà delle variabili PSCustomObject (#18682)
  • Correggi il completamento dei membri nell'argomento di attributo (#17902)
  • Escludere gli alias dei parametri ridondanti dai risultati di completamento (#19382)
  • Correzione del completamento dei membri della classe per le classi con tipi di base (#19179)
  • Aggiungere il completamento per l'uso di parole chiave (#16514)
  • Correzione della perdita di variabili TabExpansion2 durante il completamento delle variabili (#18763)
  • Abilitare il completamento delle variabili tra gli ambiti di ScriptBlock (#19819)
  • Correzione del completamento della variabile di istruzione foreach (#19814)
  • Correzione della precedenza di inferenza del tipo di variabile (#18691)
  • Correzione del completamento dei membri per la classe Enum di PowerShell (#19740)
  • Correzione dell'analisi dei valori letterali di matrice nelle espressioni di indice nelle chiamate al metodo (#19224)
  • Migliorare il completamento del percorso (#19489)
  • Correzione di un errore di indicizzazione fuori limite in CompleteInput per l'input di script vuoto (#19501)
  • Migliorare le prestazioni di completamento delle variabili (#19595)
  • Migliorare il completamento della chiave hashtable per le assegnazioni di variabili vincolate di tipo, tabelle Hash annidate e altro ancora (#17660)
  • Interpretare l'output dell'applicazione esterna in formato stringa (#19193)
  • Aggiornare il completamento dei parametri per le enumerazioni per escludere i valori non consentiti dagli attributi ValidateRange (#17750) (grazie @fflaten!).
  • Correzione del completamento dei parametri dinamici (#19510)
  • Aggiungere il completamento per le variabili assegnate dall'istruzione Data (#19831)
  • Correggere l'espansione della tilde (~) nei sistemi Windows a $home per evitare situazioni di utilizzo con comandi nativi (#21529)

Miglioramenti dei cmdlet Web

Molti grazie a @CarloToso e altri per tutto il lavoro sul miglioramento dei cmdlet Web.

  • Correzione della decompressione nei cmdlet Web per includere Brotli (#17955) (grazie @iSazonov!)
  • I webcmdlet aggiungono 308 ai codici di reindirizzamento e alla pulizia minima (#18536)
  • Completa il rendering della barra di avanzamento in Invoke-WebRequest quando il download è completo o annullato (#18130)
  • I cmdlet Web ottengono intervallo di di ripetizione dei tentativi dalle intestazioni di risposta se il codice di stato è 429 (#18717)
  • I cmdlet Web impostano la codifica predefinita dei set di caratteri su UTF8 (#18219)
  • Mantenere WebSession.MaximumRedirection dalle modifiche (#19190)
  • WebCmdlets analizza la dichiarazione XML per ottenere il valore di codifica, se presente. (#18748)
  • Correggere l'uso di xml -Body nei webcmdlet senza una codifica (#19281)
  • Modificare il comportamento del metodo PUT su POST 1 per il tipo di contenuto predefinito in WebCmdlets (#19152)
  • Prendere in considerazione il ContentType dagli Header nei WebCmdlets (#19227)
  • Consentire di mantenere il metodo HTTP originale aggiungendo -PreserveHttpMethodOnRedirect ai cmdlet Web (#18894)
  • I webcmdlet visualizzano un errore da https a http durante il reindirizzamento (#18595)
  • Aggiungere l'opzione AllowInsecureRedirect ai cmdlet Web (#18546)
  • Migliorare il messaggio dettagliato nei cmdlet Web quando la lunghezza del contenuto è sconosciuta (#19252)
  • Costruire l'URI relativo per i link dalla risposta in Invoke-WebRequest (#19092)
  • Correzione del reindirizzamento per -CustomMethod POST in WebCmdlets (#19111)
  • Eliminare la risposta precedente in Webcmdlets (#19117)
  • Migliorare Invoke-WebRequest formato di errori xml e json (#18837)
  • Aggiungere ValidateNotNullOrEmpty ai parametri OutFile e InFile di WebCmdlets (#19044)
  • HttpKnownHeaderNames aggiorna l'elenco delle intestazioni (#18947)
  • Invoke-RestMethod -FollowRelLink correzione dei collegamenti contenenti virgole (#18829)
  • Correzione del bug con la gestione del reindirizzamento e KeepAuthorization nei cmdlet Web (#18902)
  • Aggiungere StatusCode a HttpResponseException (#18842)
  • Supporto delle connessioni permanenti HTTP nei cmdlet Web (#19249) (grazie @stevenebutler!)
  • piccola pulizia Invoke-RestMethod (#19490)
  • Migliorare il messaggio dettagliato di WebCmdlets per visualizzare la versione HTTP corretta (#19616)
  • Aggiungere FileNameStar a MultipartFileContent in WebCmdlets (#19467)
  • Correzione dello stato HTTP da 409 a 429 per WebCmdlets per ottenere l'intervallo di ripetizione dall'intestazione Retry-After. (#19622) (Grazie @mkht!)
  • Modificare -TimeoutSec in -ConnectionTimeoutSeconds e aggiungere -OperationTimeoutSeconds ai cmdlet Web (#19558) (grazie @stevenebutler!) Altri cmdlet)
  • Supportare CTRL+c quando la connessione si blocca durante la lettura dei dati in WebCmdlets (#19330) (grazie @stevenebutler!)
  • Supporto per i socket di dominio Unix nei WebCmdlet (#19343)

Altri miglioramenti ai cmdlet

  • Test-Connection restituisce ora un errore relativo alla necessità di usare sudo nelle piattaforme Linux quando si usano dimensioni del buffer personalizzate (#20369)
  • Aggiungere tipi di output ai comandi Format (#18746) (grazie @MartinGC94!)
  • Aggiungere attributi del tipo di output per Get-WinEvent (#17948) (grazie @MartinGC94!)
  • Aggiungere parametri Path e LiteralPath al cmdlet Test-Json (#19042) (grazie @ArmaanMcleod!)
  • Aggiungere il parametro NoHeader ai cmdlet ConvertTo-Csv e Export-Csv (#19108) (grazie @ArmaanMcleod!))
  • Aggiungere i parametri Confirm e WhatIf a Stop-Transcript(#18731) (Grazie @JohnLBevan!))
  • Aggiungere parametro FuzzyMinimumDistance a Get-Command (#18261)
  • Rendere parametro encoding in grado di accettare ANSI codifica in PowerShell (#19298) (grazie @CarloToso!)
  • Aggiungere lo stato di avanzamento a Copy-Item (#18735)
  • Update-Help ora segnala un errore quando si utilizzano impostazioni locali implicite su sistemi non statunitensi. (#17780) (Grazie @dkaszews!)
  • Non richiedere attività durante la creazione di un record di avanzamento completato (#18474) (Grazie @MartinGC94!))
  • Non consentire valori negativi per i parametri dei cmdlet Get-Content-Head e -Tail (#19715) (grazie @CarloToso!)
  • Far sì che Update-Help generi un errore corretto quando la cultura corrente non è associata a una lingua (#19765) (grazie @josea!))
  • Consentire la combinazione di parametri -Skip e -SkipLast nel cmdlet Select-Object. (#18849) (Grazie @ArmaanMcleod!)
  • Aggiungere Get-SecureRandom cmdlet (#19587)
  • Set-Clipboard -AsOSC52 per l'utilizzo remoto (#18222) (grazie @dkaszews!)
  • Velocizzare la risoluzione del percorso relativo Resolve-Path (#19171) (grazie @MartinGC94!)
  • Aggiunto il parametro switch -CaseInsensitive ai cmdlet Select-Object e Get-Unique (#19683) (grazie @ArmaanMcleod!))
  • Restart-Computer e Stop-Computer devono generare un errore quando non vengono eseguiti tramite sudo su Unix (#19824)

Miglioramenti del motore

Aggiornamenti di $PSStyle

  • Aggiunge proprietà Dim e DimOff (#18653)
  • Aggiunti metodi statici alla classe PSStyle che mappano i valori di colore di primo piano e di sfondo ConsoleColor alle sequenze di escape ANSI (#17938)
  • Le intestazioni di tabella per i campi calcolati vengono formattate in corsivo per impostazione predefinita
  • Aggiungere il supporto per il rispetto delle $PSStyle.OutputRendering nell'host remoto (#19601)
  • Dati di telemetria aggiornati per includere l'uso di moduli di CrescendoBuilt (#20371)

Altri aggiornamenti del motore

  • Rendere la classe PowerShell non affiliata a Runspace quando si dichiara l'attributo NoRunspaceAffinity (#18138)
  • Aggiungere l'attributo ValidateNotNullOrWhiteSpace (#17191) (grazie @wmentha!)
  • Aggiungi sqlcmd all'elenco per il passaggio di argomenti legacy (#18559)
  • Aggiungere la funzione cd~ (#18308) (grazie @GigaScratch!)
  • Correggere l'analisi dei tipi di matrice nei tipi generici (#19205) (grazie @MartinGC94!))
  • Correzione del globbing con wildcard nella directory principale dei percorsi dei dispositivi (#19442) (grazie @MartinGC94!))
  • Aggiungere un'API pubblica per ottenere posizioni degli elementi PSModulePath (#19422)
  • Correzione della stringa non corretta per la conversione dei tipi (#19560) (grazie @MartinGC94!)
  • Correzione dell'esecuzione lenta quando vengono usati molti punti di interruzione (#14953) (grazie @nohwnd!)
  • Rimuovere il codice correlato a #requires -pssnapin (#19320)

Funzionalità sperimentali

PowerShell 7.4 introduce le funzionalità sperimentali seguenti:

  • PSFeedbackProvider: sostituisce il framework di suggerimenti hardcoded con un provider di feedback estendibile.
    • Questa funzionalità aggiunge anche le proprietà FeedbackName, FeedbackTexte FeedbackAction a $PSStyle.Formatting che consentono di modificare la formattazione dei messaggi di feedback.
  • PSModuleAutoLoadSkipOfflineFiles - L'individuazione dei moduli ora ignora i file contrassegnati dai provider di servizi cloud come non completamente su disco.
  • PSCommandWithArgs - Aggiunta del supporto per passare argomenti ai comandi in forma di singola stringa

Le seguenti funzionalità sperimentali sono diventate mainstream:

PowerShell 7.4 ha modificato le funzionalità sperimentali seguenti:

Per altre informazioni sulle funzionalità sperimentali, vedere Using Experimental Features.