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'
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 ancheTest-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.
- Con questa modifica,
- 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 usaresudo
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 usaresudo
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
eExport-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 cmdletSelect-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 cmdletSelect-Object
eGet-Unique
(#19683) (grazie @ArmaanMcleod!)) -
Restart-Computer
eStop-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.
- Questa funzionalità aggiunge anche le proprietà FeedbackName, FeedbackTexte FeedbackAction a
- 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:
- PSConstrainedAuditLogging
- PSCustomTableHeaderLabelDecoration
- PSNativeCommandErrorActionPreference
- PSNativeCommandPreserveBytePipe
- PSWindowsNativeCommandArgPassing
PowerShell 7.4 ha modificato le funzionalità sperimentali seguenti:
- PSCommandNotFoundSuggestion - questa funzionalità ora utilizza un provider di feedback estensibile anziché suggerimenti predefiniti (#18726)
Per altre informazioni sulle funzionalità sperimentali, vedere Using Experimental Features.