Novità di PowerShell 7.4
PowerShell 7.4 include le funzionalità, gli aggiornamenti e le modifiche di rilievo seguenti. PowerShell 7.4 è basato su .NET 8.0.0.
Per un elenco completo delle modifiche, vedere CHANGELOG nel repository GitHub.
Modifiche di rilievo
- Le immagini Docker di Nano Server non sono disponibili per questa versione
- Aggiunta del 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 della bozza 4 meno recenti. (#18141) (grazie @gregsdennis!). Per altre informazioni sugli schemi JSON, vedere la documentazione dello schema JSON. Questa operazione si interrompeTest-Json
anche per i file JSON e JSONC con commenti. ConvertFrom-Json
il supporto usa ancora Newtonsoft.Json.Schema in modo che possa 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 sulla necessità di usare nelle piattaforme Linux quando si usanosudo
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 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
Resolve-Path
quando si usa il parametro RelativeBasePath (#19755) (grazie) @MartinGC94!) - 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 include 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 include ora PSReadLine v2.3.4. Per altre informazioni, vedere la documentazione per PSReadLine.
Miglioramenti del completamento tramite tabulazione
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 restituite vuote (#18351)
- Migliorare l'inferenza dei tipi per Get-Random (#18972)
- Correzione dell'inferenza del tipo per tutte le variabili di ambito (#18758)
- Migliorare l'enumerazione dei tipi dedotti nella pipeline (#17799)
- Aggiungere il completamento per i valori nei confronti durante il confronto delle enumerazioni (#17654)
- Aggiungere il completamento dell'assegnazione di proprietà per le enumerazioni (#19178)
- Correzione del completamento per le proprietà delle variabili PSCustomObject (#18682)
- Correzione del completamento dei membri nell'argomento 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 delle parole chiave (#16514)
- Correzione della perdita di variabili TabExpansion2 durante il completamento delle variabili (#18763)
- Abilitare il completamento delle variabili tra gli ambiti scriptBlock (#19819)
- Correzione del completamento della variabile di istruzione foreach (#19814)
- Correzione della precedenza dell'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)
- Dedurre l'output dell'applicazione esterna come stringhe (#19193)
- Aggiornare il completamento dei parametri per le enumerazioni per escludere i valori non consentiti dagli
ValidateRange
attributi (#17750) (grazie @fflaten!). - Correzione del completamento dei parametri dinamici (#19510)
- Aggiungere il completamento per le variabili assegnate dall'istruzione Data (#19831)
- Correzione dell'espansione della tilde (
~
) nei sistemi Windows per$home
evitare casi d'uso di rilievo 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)
- Completare il rendering della barra di stato in Invoke-WebRequest al termine o all'annullamento del download (#18130)
- I cmdlet Web ottengono l'intervallo Retry-After 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)
- Correzione dell'uso di xml -Body in webcmdlets senza codifica (#19281)
- Modificare il comportamento del metodo PUT su POST 1 per il tipo di contenuto predefinito in WebCmdlets (#19152)
- Prendere in considerazione ContentType from Headers in WebCmdlets (#19227)
- Consenti di mantenere il metodo HTTP originale aggiungendo -PreserveHttpMethodOnRedirect ai cmdlet Web (#18894)
- I webcmdlet visualizzano un errore in https al reindirizzamento http (#18595)
- Aggiungere l'opzione AllowInsecureRedirect ai cmdlet Web (#18546)
- Migliorare il messaggio dettagliato nei cmdlet Web quando la lunghezza del contenuto è sconosciuta (#19252)
- Compilare l'URI relativo per i collegamenti dalla risposta in
Invoke-WebRequest
(#19092) - Correzione del reindirizzamento per
-CustomMethod POST
in WebCmdlets (#19111) - Eliminare la risposta precedente in Webcmdlets (#19117)
- Migliorare il
Invoke-WebRequest
formato degli errori xml e json (#18837) - Aggiungere ValidateNotNullOrEmpty ai parametri OutFile e InFile di WebCmdlets (#19044)
- HttpKnownHeaderNames update headers list (#18947)
Invoke-RestMethod -FollowRelLink
correzione dei collegamenti contenenti virgole (#18829)- Correzione di bug con la gestione del reindirizzamento e dell'autenticazione KeepAuthorization nei cmdlet Web (#18902)
- Aggiungere StatusCode a HttpResponseException (#18842)
- Supporto delle connessioni permanenti HTTP nei cmdlet Web (#19249) (grazie)@stevenebutler!)
Invoke-RestMethod
Pulizia piccola (#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 tra tentativi dall'intestazione Retry-After. (#19622) (grazie) @mkht!)
- Passare
-TimeoutSec
a-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 del socket di dominio Unix in WebCmdlets (#19343)
Altri miglioramenti ai cmdlet
Test-Connection
restituisce ora l'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
Test-Json
cmdlet (#19042) (grazie) @ArmaanMcleod!) - Aggiungere il parametro NoHeader ai
ConvertTo-Csv
cmdlet eExport-Csv
(#19108) (grazie)@ArmaanMcleod!) - Aggiungere i parametri Confirm e WhatIf a
Stop-Transcript
(#18731) (grazie) @JohnLBevan!) - Aggiungere il parametro FuzzyMinimumDistance a
Get-Command
(#18261) - Rendere il parametro Encoding in grado di accettare
ANSI
la codifica in PowerShell (#19298) (grazie)@CarloToso!) - Aggiungere lo stato di avanzamento a
Copy-Item
(#18735) Update-Help
ora segnala un errore quando si usano impostazioni cultura implicite nei sistemi non statunitensi. (#17780) (grazie) @dkaszews!)- Non richiedere attività durante la creazione di un record di stato completato (#18474) (grazie)@MartinGC94!)
- Non consentire valori negativi per
Get-Content
i parametri del-Head
cmdlet e-Tail
(#19715) (grazie) @CarloToso!) - Generare
Update-Help
un errore corretto quando le impostazioni cultura correnti non sono associate a una lingua (#19765) (grazie)@josea!) - Consentire la combinazione di
-Skip
parametri e-SkipLast
nelSelect-Object
cmdlet . (#18849) (grazie) @ArmaanMcleod!) - Aggiungere
Get-SecureRandom
il cmdlet (#19587) Set-Clipboard -AsOSC52
per l'utilizzo remoto (#18222) (grazie) @dkaszews!)- Velocizzare la
Resolve-Path
risoluzione del percorso relativo (#19171) (grazie) @MartinGC94!) - Aggiunta del parametro
-CaseInsensitive
switch aiSelect-Object
cmdlet eGet-Unique
(#19683) (grazie)@ArmaanMcleod!) Restart-Computer
eStop-Computer
dovrebbe non riuscire con errore quando non è in esecuzione tramite sudo su Unix (#19824)
Miglioramenti del motore
Aggiornamenti a $PSStyle
- Aggiunge proprietà Dim e DimOff (#18653)
- Aggiunta di metodi statici alla classe PSStyle che esegue il mapping dei valori ConsoleColor in primo piano e di sfondo alle sequenze di escape ANSI (#17938)
- Le intestazioni di tabella per i campi calcolati vengono formattate in corsivo per impostazione predefinita
- Aggiunta del supporto per il rispetto
$PSStyle.OutputRendering
nell'host remoto (#19601) - Dati di telemetria aggiornati per includere l'uso dei
CrescendoBuilt
moduli (#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!) - Aggiungere
sqlcmd
all'elenco per il passaggio di argomenti legacy (#18559) - Aggiungere la funzione
cd~
(#18308) (grazie) @GigaScratch!) - Correzione dell'analisi dei tipi di matrice nei tipi generici (#19205) (grazie)@MartinGC94!)
- Correzione del globbing con caratteri jolly nella radice dei percorsi dei dispositivi (#19442) (grazie)@MartinGC94!)
- Aggiungere un'API pubblica per ottenere posizioni degli elementi PSModulePath (#19422)
- Correzione di una stringa errata per la conversione del tipo (#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 dei suggerimenti hardcoded con un provider di feedback estendibile.
- Questa funzionalità aggiunge anche le proprietà FeedbackName, FeedbackText e FeedbackAction a
$PSStyle.Formatting
che consentono di modificare la formattazione dei messaggi di feedback.
- Questa funzionalità aggiunge anche le proprietà FeedbackName, FeedbackText e FeedbackAction a
- PSModuleAutoLoadSkipOfflineFiles : l'individuazione dei moduli ignora ora i file contrassegnati dai provider di servizi cloud come non completamente su disco.
- PSCommandWithArgs - Aggiunta del supporto per il passaggio di argomenti ai comandi come 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 usa un provider di feedback estendibile anziché suggerimenti hardcoded (#18726)
Per altre informazioni sulle funzionalità sperimentali, vedere Uso delle funzionalità sperimentali.