Novità di PowerShell 7.3

PowerShell 7.3 è la versione stabile successiva, basata su .NET 7.0.

PowerShell 7.3 include le funzionalità, gli aggiornamenti e le modifiche di rilievo seguenti.

Modifiche e miglioramenti di rilievo

  • In questa versione le API di Windows sono state aggiornate o rimosse per la conformità, il che significa che PowerShell 7.3 non viene eseguito in Windows 7. Anche se Windows 7 non è più supportato, le build precedenti potrebbero essere eseguite in Windows 7.
  • PowerShell Direct per Hyper-V è supportato solo in Windows 10 versione 1809 e successive.
  • Test-Connectionviene interrotta a causa di una modifica intenzionale di rilievo in .NET 7. Viene tracciato da #17018
  • Aggiungere clean un blocco al blocco di script come peer a begin, processe end per consentire una pulizia semplice delle risorse (#15177)
  • Modificare il valore predefinito per $PSStyle.OutputRendering in Host
  • Apportare Out-String e Out-File mantenere invariato l'input stringa (#17455)
  • Spostare la definizione dei dati del tipo di System.Security.AccessControl.ObjectSecurity nel modulo Microsoft.PowerShell.Security (#16355) (grazie) @iSazonov!)
    • Prima di questa modifica, un utente non deve importare in modo esplicito il modulo Microsoft.PowerShell.Security per usare le proprietà del codice definite per un'istanza di System.Security.AccessControl.ObjectSecurity.
    • Dopo questa modifica, un utente deve importare in modo esplicito il modulo Microsoft.PowerShell.Security per usare tali proprietà di codice e metodi di codice.

Miglioramenti del completamento tramite tabulazione

  • PowerShell 7.3 include PSReadline 2.2.6, che abilita IntelliSense predittivo per impostazione predefinita. Per altre informazioni, vedere about_PSReadLine.
  • Correzione del completamento della scheda all'interno del blocco di script specificato per .ValidateScriptAttribute (#14550) (grazie) @MartinGC94!)
  • Aggiunta del completamento della scheda per le etichette del ciclo dopo break/continue (#16438) (grazie) @MartinGC94!)
  • Migliorare il completamento della tabella hash in più scenari (#16498) (grazie)@MartinGC94!)
    • Splatting dei parametri
    • Parametro arguments per Invoke-CimMethod
    • Parametro FilterHashtable per Get-WinEvent
    • Parametro della proprietà per i cmdlet CIM
    • Rimuove i duplicati dagli scenari di completamento dei membri
  • Supporto delle barre nel completamento della condivisione di rete (percorso UNC) (#17111) (grazie) @sba923!)
  • Migliorare il completamento automatico dei membri (#16504) (grazie)@MartinGC94!)
  • Assegnare la priorità ai completamenti ValidateSet rispetto alle Enumerazioni per i parametri (#15257) (grazie) @MartinGC94!)
  • Aggiunta del supporto dell'inferenza dei tipi per i metodi generici con parametri di tipo (#16951) (grazie) @MartinGC94!)
  • Migliorare l'inferenza e i completamenti dei tipi (#16963) (grazie)@MartinGC94!)
    • Consente di visualizzare i metodi nei risultati di completamento per ForEach-Object -MemberName
    • Impedisce il completamento delle espressioni che restituiscono void come ([void](""))
    • Consente la visualizzazione dei costruttori di classe non predefiniti quando il completamento della classe è basato su AST
  • Migliorare l'inferenza dei tipi per $_ (#17716) (grazie) @MartinGC94!)
  • Correzione dell'inferenza del tipo per ICollection (#17752) (grazie)@MartinGC94!)
  • Impedire la rimozione delle parentesi graffe durante il completamento delle variabili (#17751) (grazie) @MartinGC94!)
  • Aggiunta del completamento per le espressioni di indice per i dizionari (#17619) (grazie)@MartinGC94!)
  • Correzione del completamento del tipo per i token di attributo (#17484) (grazie)@MartinGC94!)
  • Migliorare il completamento della scheda dei parametri dinamici (#17661) (grazie)@MartinGC94!)
  • Evitare l'associazione dei parametri posizionali quando si completa il parametro davanti al valore (#17693) (grazie)@MartinGC94!)

Miglioramento della gestione degli errori

  • Impostare $? correttamente per l'espressione di comando con reindirizzamenti (#16046)
  • Correggere un errore di cast quando si usa $PSNativeCommandUseErrorActionPreference (#15993)
  • Rendere facoltativa la ErrorActionPreference gestione degli errori del comando nativo (#15897)
  • Specificare il percorso eseguibile come TargetObject codice di uscita diverso da zero ErrorRecord (#16108) (grazie) @rkeithhill!)

Miglioramenti della sessione e della comunicazione remota

  • Aggiungere -Options ai comandi PSRP tramite SSH per consentire il passaggio diretto delle opzioni OpenSSH (#12802) (grazie)@BrannenGH!)
  • Aggiungere -ConfigurationFile un parametro a per consentire l'avvio pwsh di un nuovo processo con la configurazione di sessione definita in un .pssc file (#17447)
  • Aggiungere il supporto per l'uso New-PSSessionConfigurationFile su piattaforme non Windows (#17447)

Aggiornamento dei cmdlet:

  • Aggiungere -HttpVersion il parametro ai cmdlet Web (#15853) (grazie)@hayhay27!)
  • Aggiunta del supporto ai cmdlet Web per i tag di input aperti (#16193) (grazie)@farmerau!)
  • Correzione ConvertTo-Json -Depth per consentire 100 al massimo (#16197) (grazie)@KevRitchie!)@rkeithhill!)
  • Migliorare la gestione delle variabili quando si chiama Invoke-Command con l'espressione $using: (#16113) (grazie)@dwtaber!)
  • Aggiungi -StrictMode a Invoke-Command per consentire di specificare la modalità strict quando si richiama il comando in locale (#16545) (grazie) @Thomas-Yu!)
  • Aggiungere clean un blocco al blocco di script come peer a begin, processe end per consentire una pulizia semplice delle risorse (#15177)
  • Aggiunta -Amended dell'opzione al Get-CimClass cmdlet (#17477) (grazie)@iSazonov)
  • Modifica per ConvertFrom-Json -AsHashtable l'uso della tabella hash ordinata (#17405)
  • Rimozione delle sequenze di escape ANSI nelle stringhe prima dell'invio a Out-GridView (#17664)
  • Aggiunta del parametro Milliseconds a New-TimeSpan (#17621) (grazie) @NoMoreFood!)
  • Mostra parametri facoltativi durante la visualizzazione di overload e definizioni di metodo (#13799) (grazie)@eugenesmlv!)
  • Consenti l'esecuzione dei comandi anche se la directory di lavoro corrente non esiste più (#17579)
  • Aggiunta del supporto per HTTPS con Set-AuthenticodeSignature -TimeStampServer (#16134) (grazie)@Ryan-Hutchison-USAF!)
  • Eseguire il rendering dei numeri decimali in una tabella usando le impostazioni cultura correnti (#17650)
  • Aggiunta dell'acceleratore di tipi ordinato per OrderedDictionary (#17804) (grazie)@fflaten!)
  • Aggiungere find.exe al comportamento di associazione di argomenti legacy per Windows (#17715)
  • Aggiungere -noprofileloadtime l'opzione a pwsh (#17535) (grazie)@rkeithhill!)

Per un elenco completo delle modifiche, vedere Log delle modifiche nel repository GitHub.

Funzionalità sperimentali

In PowerShell 7.3, le funzionalità sperimentali seguenti sono diventate mainstream:

  • PSAnsiRenderingFileInfo - Questa funzionalità aggiunge il membro e abilita la $PSStyle.FileInfo colorazione di tipi di file specifici.

  • PSCleanBlock - Aggiunge clean blocco al blocco di script come peer a begin, processe end per semplificare la pulizia delle risorse.

  • PSAMSIMethodInvocationLogging - Estende i dati inviati ad AMSI per l'ispezione in modo da includere tutte le chiamate dei membri del metodo .NET.

  • PSNativeCommandArgumentPassing : PowerShell usa ora la proprietà ArgumentList dell'oggetto StartProcessInfo anziché il meccanismo precedente di ricostruire una stringa quando si richiama un eseguibile nativo.

    PowerShell 7.3.1 aggiunge sqlcmd.exe all'elenco di comandi nativi in Windows che usano lo stile di passaggio dell'argomento Legacy .

  • PSExec - Aggiunge il nuovo Switch-Process cmdlet (alias exec) per garantire exec la compatibilità per i sistemi non Windows.

    PowerShell 7.3.1 ha modificato l'alias in una funzione che esegue il exec wrapping di Switch-Process. La funzione consente di passare parametri al comando nativo che potrebbe avere erroneamente associato al parametro WithCommand .

PowerShell 7.3 introduce le funzionalità sperimentali seguenti:

  • PSNativeCommandErrorActionPreference : aggiunge la $PSNativeCommandUseErrorActionPreference variabile per abilitare gli errori generati da comandi nativi come errori di PowerShell.

PowerShell 7.3 ha rimosso le funzionalità sperimentali seguenti:

  • PSNativePSPathResolution la funzionalità sperimentale non è più supportata.
  • PSStrictModeAssignment la funzionalità sperimentale non è più supportata.

Per altre informazioni sulle funzionalità sperimentali, vedere Uso delle funzionalità sperimentali.