Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
PowerShell 7.0 è un'edizione open-source e multipiattaforma (Windows, macOS e Linux) di PowerShell, progettata per gestire ambienti eterogenei e cloud ibrido.
In questa versione, presentiamo una serie di nuove funzionalità, tra cui:
- Parallelizzazione della pipeline con
ForEach-Object -Parallel - Nuovi operatori:
- Operatore ternario:
a ? b : c - Operatori della catena di pipeline:
||e&& - Operatori condizionali nulli:
??e??=
- Operatore ternario:
- Una vista degli errori semplificata e dinamica e
Get-Errorun cmdlet per un'indagine più semplice sugli errori - Un livello di compatibilità che consente agli utenti di importare moduli in una sessione implicita di PowerShell di Windows
- Notifiche automatiche di nuova versione
- La capacità di richiamare direttamente le risorse DSC da PowerShell 7 (sperimentale)
Per vedere l'elenco completo di funzionalità e correzioni, consulta i changelog.
Dove posso installare PowerShell?
PowerShell 7 supporta attualmente i seguenti sistemi operativi su x64, tra cui:
- Windows 8.1 e 10
- Windows Server 2012, 2012 R2, 2016 e 2019
- macOS 10.13+
- Red Hat Enterprise Linux (RHEL) / CentOS 7
- Fedora 30+
- Debian 9
- Ubuntu LTS 16.04+
- Alpine Linux 3.8+
Inoltre, PowerShell 7.0 supporta versioni ARM32 e ARM64 di Debian, Ubuntu e ARM64 Alpine Linux.
Controlla le istruzioni di installazione del tuo sistema operativo preferito:Windows, macOS o Linux.
Sebbene non sia ufficialmente supportato, la community ha fornito anche pacchetti per Arch e Kali Linux.
Annotazioni
Attualmente Debian 10 e CentOS 8 non supportano il remot di WinRM. Per dettagli sulla configurazione del remoting basato su SSH, vedi PowerShell Remoting over SSH.
Per ulteriori informazioni up-todata sui sistemi operativi supportati e sul ciclo di vita del supporto, vedi il Lifecycle di Supporto PowerShell.
Esecuzione di PowerShell 7
PowerShell 7 si installa in una directory separata da Windows PowerShell. Questo ti permette di eseguire PowerShell 7 fianco a fianco con Windows PowerShell 5.1. Per PowerShell 6.x, PowerShell 7 è un aggiornamento in loco che rimuove PowerShell 6.x.
- PowerShell 7 è installato per
%programfiles%\PowerShell\7 - La cartella
%programfiles%\PowerShell\7viene aggiunta a$env:PATH
Il pacchetto di installazione di PowerShell 7 aggiorna le versioni precedenti di PowerShell 6.x:
- PowerShell 6.x su Windows:
%programfiles%\PowerShell\6viene sostituito da%programfiles%\PowerShell\7 - Linux:
/opt/microsoft/powershell/6viene sostituito da/opt/microsoft/powershell/7 - macOS:
/usr/local/microsoft/powershell/6viene sostituito da/usr/local/microsoft/powershell/7
Annotazioni
In Windows PowerShell, l'eseguibile per avviare PowerShell si chiama powershell.exe. Nella versione 6 e successive, il nome dell'eseguibile viene cambiato per supportare l'esecuzione affiancata. Il nuovo nome eseguibile per avviare PowerShell 7 è pwsh.exe. Le versioni di anteprima rimangono in posizione pwsh-preview invece che pwsh nella directory 7-previsualizazione.
Migliorata compatibilità retroattiva con Windows PowerShell
PowerShell 7.0 segna un passaggio a .NET Core 3.1, consentendo una compatibilità retroattiva significativamente maggiore con i moduli PowerShell esistenti di Windows. Questo include molti moduli su Windows che richiedono funzionalità GUI come Out-GridView e Show-Command, oltre a molti moduli di gestione dei ruoli che vengono inclusi come parte di Windows.
Per Windows, viene aggiunto un nuovo parametro di commutazione, UseWindowsPowerShell , a Import-Module. Questo switch crea un modulo proxy in PowerShell 7 che utilizza un processo PowerShell locale di Windows per eseguire implicitamente qualsiasi cmdlet contenuto in quel modulo. Per maggiori informazioni su Import-Module.
Per maggiori informazioni su quali moduli Microsoft funzionano con PowerShell 7.0, consulta la Tabella di Compatibilità dei Moduli.
Esecuzione parallela aggiunta a ForEach-Object
Il ForEach-Object cmdlet, che itera gli elementi di una collezione, ora ha un parallelismo integrato con il nuovo parametro Parallelo .
Di default, i blocchi di script paralleli utilizzano la directory di lavoro corrente del chiamante che ha avviato i compiti paralleli.
Questo esempio recupera 50.000 voci di log da 5 log di sistema su una macchina Windows locale:
$logNames = 'Security','Application','System','Windows PowerShell','Microsoft-Windows-Store/Operational'
$logEntries = $logNames | ForEach-Object -Parallel {
Get-WinEvent -LogName $_ -MaxEvents 10000
} -ThrottleLimit 5
$logEntries.Count
50000
Il parametro Parallel specifica il blocco script che viene eseguito in parallelo per ogni nome di log di input.
Il nuovo parametro ThrottleLimit limita il numero di blocchi script che vengono eseguiti in parallelo in un dato momento. L'impostazione predefinita è 5.
Usa la $_ variabile per rappresentare l'oggetto di input corrente nel blocco di script. Usa l'ambito $using: per passare riferimenti variabili al blocco script in esecuzione.
Per maggiori informazioni su ForEach-Object.
Operatore Ternario
PowerShell 7.0 introduce un operatore ternario che si comporta come un'affermazione if-else semplificata.
L'operatore ternario di PowerShell è modellato strettamente dalla sintassi dell'operatore ternario C#:
<condition> ? <if-true> : <if-false>
L'espressione della condizione viene sempre valutata e il suo risultato convertito in un booleano per determinare quale ramo viene valutato successivamente:
- L'espressione
<if-true>viene eseguita se l'espressione<condition>è true - L'espressione
<if-false>viene eseguita se l'espressione<condition>è false
Per esempio:
$message = (Test-Path $path) ? "Path exists" : "Path not found"
In questo esempio, se il percorso esiste, allora viene visualizzato il percorso esiste. Se il percorso non esiste, allora viene visualizzato Path not found .
Per maggiori informazioni su If.
Operatori della catena di pipeline
PowerShell 7 implementa gli && operatori and || per concatenare le pipeline in modo condizionato. Questi operatori sono conosciuti in PowerShell come "operatori della pipeline chain" e sono simili alle liste AND e OR in shell come bash e zsh, così come ai simboli di elaborazione condizionali nella Windows Command Shell (cmd.exe).
L'operatore && esegue la pipeline di destra, se la pipeline di sinistra ha avuto esito positivo. Viceversa, l'operatore || esegue la pipeline di destra se la pipeline di sinistra non è riuscita.
Annotazioni
Questi operatori usano le variabili $? e $LASTEXITCODE per determinare se una pipeline non è riuscita. In questo modo è possibile usarli con comandi nativi e non solo con cmdlet o funzioni.
Qui, il primo comando ha successo e il secondo comando viene eseguito:
Write-Output 'First' && Write-Output 'Second'
First
Second
Qui, il primo comando fallisce, il secondo non viene eseguito:
Write-Error 'Bad' && Write-Output 'Second'
Write-Error: Bad
Qui, il primo comando ha successo, il secondo comando non viene eseguito:
Write-Output 'First' || Write-Output 'Second'
First
Qui, il primo comando fallisce, quindi il secondo comando viene eseguito:
Write-Error 'Bad' || Write-Output 'Second'
Write-Error 'Bad'
Second
Per maggiori informazioni sugli operatori della catena di pipeline.
Operatori di coalescimento nullo, assegnazione e condizionali
PowerShell 7 include l'operatore ??di coalescing nullo , l'assegnazione ??=condizionale nulla e gli operatori ?. di accesso condizionali nulli e ?[].
Operatore di coalescimento nullo ??
L'operatore ?? di coalescenza nulla restituisce il valore del suo operando di sinistra se non è nullo.
In caso contrario, valuta l'operando di destra e ne restituisce il risultato. L'operatore ?? non valuta l'operando di destra se l'operando di sinistra restituisce un valore diverso da Null.
$x = $null
$x ?? 100
100
Nel seguente esempio, l'operando destro non verrà valutato:
[string] $todaysDate = '1/10/2020'
$todaysDate ?? (Get-Date).ToShortDateString()
1/10/2020
Operatrice di assegnazione condizionale nulla ?? =
L'operatore ??= di assegnazione condizionale nullo assegna il valore del suo operando destro all'operando sinistro solo se l'operando sinistro valuta a nullo. L'operatore ??= non valuta l'operando di destra se l'operando di sinistra restituisce un valore diverso da Null.
$x = $null
$x ??= 100
$x
100
Nel seguente esempio, l'operando destro non viene valutato:
[string] $todaysDate = '1/10/2020'
$todaysDate ??= (Get-Date).ToShortDateString()
1/10/2020
Operatori di accesso ai membri condizionali nulli ?. e? [] (Sperimentale)
Annotazioni
Questa è una funzione sperimentale chiamata PSNullConditionalOperators. Per ulteriori informazioni, vedi Utilizzo delle caratteristiche sperimentali.
Un operatore condizionale nullo consente l'accesso ai membri, ?., o l'accesso agli elementi, ?[], al suo operando solo se quell'operando si valuta come non-nullo; altrimenti, restituisce nullo.
Annotazioni
Poiché PowerShell consente di ? di far parte del nome della variabile, è necessaria una specifica formale del nome della variabile per l'uso di questi operatori. Quindi è necessario usare {} intorno ai nomi delle variabili come ${a} o quando ? fa parte del nome ${a?}della variabile .
Nel seguente esempio, il valore dello stato della proprietà membro viene restituito:
$Service = Get-Service -Name 'bits'
${Service}?.status
Stopped
Il seguente esempio restituisce null, senza tentare di accedere allo stato del nome del membro:
$service = $Null
${Service}?.status
Analogamente, usando ?[], il valore dell'elemento viene restituito:
$a = 1..10
${a}?[0]
1
E quando l'operando è nullo, l'elemento non viene accessibile e viene restituito nullo:
$a = $null
${a}?[0]
Per maggiori informazioni About_Operators.
Nuova vista ConciseView e cmdlet Get-Error
PowerShell 7.0 migliora la visualizzazione dei messaggi di errore per migliorare la leggibilità degli errori interattivi e di script con una nuova visualizzazione predefinita, ConciseView. Le viste sono selezionabili dall'utente tramite la variabile $ErrorViewdi preferenza .
Con ConciseView, se un errore non deriva da uno script o da un parser, allora si tratta di un messaggio di errore di una sola riga:
Get-Childitem -Path c:\NotReal
Get-ChildItem: can't find path 'C:\NotReal' because it doesn't exist
Se l'errore si verifica durante l'esecuzione dello script o è un errore di parsing, PowerShell restituisce un messaggio di errore multilinea che contiene l'errore, un puntatore e un messaggio di errore che mostrano dove si trova l'errore in quella riga. Se il terminale non supporta sequenze di escape colore ANSI (VT100), allora i colori non vengono visualizzati.
Visualizzazione degli errori da uno script
La vista predefinita in PowerShell 7 è ConciseView. La precedente vista predefinita era NormalView e puoi selezionarla impostando la variabile $ErrorViewpreference .
$ErrorView = 'NormalView' # Sets the error view to NormalView
$ErrorView = 'ConciseView' # Sets the error view to ConciseView
Annotazioni
Viene aggiunta una nuova proprietà, ErrorAccentColor , $Host.PrivateData per supportare la modifica del colore d'accento del messaggio di errore.
Un nuovo cmdlet Get-Error fornisce una visione completa e dettagliata dell'errore completamente qualificato quando desiderato. Di default il cmdlet mostra tutti i dettagli, comprese le eccezioni interne, dell'ultimo errore avvenuto.
Il Get-Error cmdlet supporta input dalla pipeline usando la variabile $Errorintegrata .
Get-Error Mostra tutti gli errori di pip.
$Error | Get-Error
Il Get-Error cmdlet supporta il parametro Newest , permettendoti di specificare quanti errori della sessione corrente desideri che vengano visualizzati.
Get-Error -Newest 3 # Displays the lst three errors that occurred in the session
Per maggiori informazioni su Get-Error.
Notifica nuova versione
PowerShell 7 utilizza le notifiche di aggiornamento per avvisare gli utenti dell'esistenza di aggiornamenti di PowerShell. Una volta al giorno, PowerShell esegue una query su un servizio online per determinare se è disponibile una versione più recente.
Annotazioni
Il controllo aggiornamenti avviene durante la prima sessione di un determinato periodo di 24 ore. Per motivi di prestazioni, il controllo dell'aggiornamento inizia 3 secondi dopo l'inizio della sessione. La notifica viene mostrata solo all'inizio delle sessioni successive.
Di default, PowerShell si abbona a uno dei due diversi canali di notifica a seconda della sua versione/ramo. Le versioni supportate e generalmente disponibili (GA) di PowerShell restituiscono solo notifiche per le versioni aggiornate di GA. Le versioni Preview and Release Candidate (RC) notificano gli aggiornamenti delle versioni di anteprima, RC e GA.
Il comportamento delle notifiche di aggiornamento può essere modificato usando la variabile di ambiente $Env:POWERSHELL_UPDATECHECK. Sono supportati i valori seguenti:
-
Il predefinito è come non definire
$Env:POWERSHELL_UPDATECHECK- Le versioni GA segnalano aggiornamenti alle versioni GA
- Le versioni di anteprima/RC notificano gli aggiornamenti alle versioni di disponibilità generale e anteprima
- Spegnendo disattiva la funzione di notifica di aggiornamento
- LTS notifica solo gli aggiornamenti delle versioni GA a lungo termine (LTS)
Annotazioni
La variabile $Env:POWERSHELL_UPDATECHECK ambiente non esiste finché non viene impostata per la prima volta.
Per impostare la notifica di versione solo per LTS le versioni:
$Env:POWERSHELL_UPDATECHECK = 'LTS'
Per impostare la notifica di versione sul comportamento Default :
$Env:POWERSHELL_UPDATECHECK = 'Default'
Per maggiori informazioni Sulle notifiche di aggiornamento.
Nuovo supporto alle risorse DSC con Invoke-DSCResource (Sperimentale)
Annotazioni
Questa è una caratteristica sperimentale chiamata PSDesiredStateConfiguration.InvokeDscResource. Per ulteriori informazioni, vedi Utilizzo delle caratteristiche sperimentali.
Il Invoke-DscResource cmdlet esegue un metodo di una risorsa PowerShell Desired State Configuration (DSC) specificata.
Questo cmdlet invoca direttamente una risorsa DSC, senza creare un documento di configurazione. Utilizzando questo cmdlet, i prodotti di gestione della configurazione possono gestire Windows o Linux utilizzando risorse DSC. Questo cmdlet consente anche il debug delle risorse quando il motore DSC è in esecuzione con il debugging attivato.
Questo comando invoca il metodo Set di una risorsa chiamata WindowsProcess e fornisce le proprietà obbligatorie Path e Arguments per avviare il processo Windows specificato.
Invoke-DscResource -Name WindowsProcess -Method Set -ModuleName PSDesiredStateConfiguration -Property @{
Path = 'C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe'
Arguments = ''
}
Per maggiori informazioni su Invoke-DSCResource.
Cambiamenti e miglioramenti improvvisi
Modifiche che interrompono la compatibilità
- Supporta le notifiche di aggiornamento LTS e canali predefiniti (#11132)
- Aggiorna Test-Connection per farlo funzionare più simile a quello di Windows PowerShell (#10697) (Grazie @vexx32!)
- Conservare i soldi? per ParenExpression, SubExpression e ArrayExpression (#11040)
- Imposta la directory di lavoro alla directory attuale in Start-Job (#10920) (Grazie @iSazonov!)
- Fai $PSCulture rifletti costantemente i cambiamenti culturali durante la sessione (#10138) (Grazie @iSazonov!)
Aggiornamenti e correzioni del motore
- Miglioramenti nelle API dei breakpoint per scenari remoti (#11312)
- Correggi la definizione di classe PowerShell che perde in un altro Runspace (#11273)
- Correggere una regressione nella formattazione causata dalla primitiva FirstOrDefault aggiunta in 7.0.0-Preview1 (#11258)
- Moduli Microsoft aggiuntivi da tracciare nella telemetria PS7 (#10751)
- Rendere le funzionalità approvate non sperimentali (#11303)
- Aggiorna ConciseView per usare TargetObject se applicabile (#11075)
- Correggi NullReferenceException nei metodi pubblici CompletionCompleters (#11274)
- Verifica dello stato del thread fix sugli appartamenti su piattaforme non Windows (#11301)
- Aggiornamento impostazione PSModulePath per concatenare le variabili dell'ambiente di processo e macchina (#11276)
- Spostare .NET Core a 3.1.0 (#11260)
- Rilevamento di $PSHOME davanti a $env:PATH (#11141)
- Consentire a pwsh di ereditare $env:PSModulePath e consentire powershell.exe di avviare correttamente (#11057)
- Spostamento a .NET Core 3.1 preview 1 (#10798)
- Controlli dei tag rifattorizzatori nel provider del file system (#10431) (Grazie @iSazonov!)
- Sostituire CR e nuova linea con un carattere 0x23CE nel logging degli script (#10616)
- Risolvi una perdita di risorse cancellando il gestore di eventi da AppDomain.CurrentDomain.ProcessExit (#10626)
- Aggiungi supporto a ActionPreference.Break per abbandonare il debugger quando vengono generati messaggi di Debug, Errore, Informazioni, Progresso, Verbose o Avviso (#8205) (Grazie @KirkMunro!)
- Abilita gli add-in del pannello di controllo di avvio in PowerShell senza specificare .CPL estensione. (#9828)
- Numeri negativi di supporto nell'operatore -split (#8960) (Grazie @ece-jacob-scott!)
Aggiornamenti e correzioni generali del Cmdlet
- Correzione per un problema su Raspbian per impostare la data delle modifiche ai file nella Funzionalità Sperimentale UnixStat (#11313)
- Aggiungi -AsPlainText a ConvertFrom-SecureString (#11142)
- Aggiunta la verifica versione di WindowsPS per WinCompat (#11148)
- Correggere la segnalazione degli errori in alcuni scenari WinCompat (#11259)
- Aggiungi un solver binario nativo (#11032) (Grazie @iSazonov!)
- Aggiornamento del calcolo della larghezza del carattere per rispettare correttamente i caratteri CJK (#11262)
- Aggiungi Unblock-File per macOS (#11137)
- Corregge la regressione in Get-PSCallStack (#11210) (Grazie @iSazonov!)
- Rimuovere l'autocaricamento del modulo ScheduledJob quando si utilizzano i cmdlet Job (#11194)
- Aggiungi OutputType a Get-Error cmdlet e preserva i nomi originali dei tipi (#10856)
- Correggere il riferimento nullo nella proprietà SupportsVirtualTerminal (#11105)
- Aggiungi il controllo del limite in Get-WinEvent (#10648) (Grazie @iSazonov!)
- Correggere il runtime dei comandi affinché StopUpstreamCommandsException non venga popolato in -ErrorVariable (#10840)
- Imposta la codifica di output su [Console]::OutputEncoding per i comandi nativi (#10824)
- Supporta blocchi di codice multilinea negli esempi (#10776) (Grazie @Greg-Smulko!)
- Aggiungi il parametro Culture al Select-String cmdlet (#10943) (Grazie @iSazonov!)
- Correggi Start-Job percorso di directory funzionante con la barra inversa successiva (#11041)
- ConvertFrom-Json: Unwrap delle collezioni di default (#10861) (Grazie @danstur!)
- Usa Hashtable con sensibilità a maiuscole e minuscole per Group-Object cmdlet con switch -CaseSensitive e -AsHashtable (#11030) (Grazie @vexx32!)
- Gestisci l'eccezione se l'enumerazione dei file fallisce durante la ricostruzione del percorso per avere la casing corretta (#11014)
- Correggi ConciseView per mostrare Attività invece di myCommand (#11007)
- Consentire ai web cmdlet di ignorare gli stati degli errori HTTP (#10466) (Grazie @vdamewood!)
- Correggere i tubi di più di un CommandInfo verso Get-Command (#10929)
- Aggiungi nuovamente Get-Counter cmdlet per Windows (#10933)
- Fai ConvertTo-Json trattare [AutomationNull]::Value e [NullString]::Value come $null (#10957)
- Rimuovere parentesi dall'indirizzo IPv6 per il remoting SSH (#10968)
- Correggere il crash se il comando inviato a pwsh è solo spazio bianco (#10977)
- Aggiunti Get-Clipboard e Set-Clipboard cross-platform (#10340)
- Correggi impostando il percorso originale dell'oggetto filesystem in modo che non abbia una barra di scorrimento extra (#10959)
- $null di supporto per ConvertTo-Json (#10947)
- Riaggiungi Out-Printer comando su Windows (#10906)
- Correggi Start-Job -WorkingDirectory con spazi bianchi (#10951)
- Restituisci il valore predefinito quando ottieni il null per un'impostazione in PSConfiguration.cs (#10963) (Grazie @iSazonov!)
- Gestire l'eccezione IO come non terminante (#10950)
- Aggiungi l'assembly GraphicalHost per abilitare Out-GridView, Show-Command e Get-Help -ShowWindow (#10899)
- Prendi ComputerName tramite pipeline in Get-HotFix (#10852) (Grazie @kvprasoon!)
- Correggere il completamento delle tabulazioni per i parametri in modo che mostri i parametri comuni come disponibili (#10850)
- Correggi GetCorrectCasedPath() per prima verificare se vengono restituite voci di file di sistema prima di chiamare First() (#10930)
- Imposta la directory di lavoro alla directory attuale in Start-Job (#10920) (Grazie @iSazonov!)
- Cambia TabExpansion2 per non richiedere -CursorColumn e trattalo come $InputScript.Length (#10849)
- Gestire il caso in cui l'host non può restituire righe o colonne dello schermo (#10938)
- Correggere l'uso dei colori d'accento per host che non li supportano (#10937)
- Riaggiungi Update-List comando (#10922)
- Aggiorna FWLink Id per Clear-RecycleBin (#10925)
- Durante il completamento della tabula, salta file se non puoi leggere gli attributi del file (#10910)
- Riaggiungi Clear-RecycleBin per Windows (#10909)
- Aggiungi
$env:__SuppressAnsiEscapeSequencesper controllare se avere una sequenza di escape VT in output (#10814) - Aggiungi -NoEmphasize parametro per colorizzare Select-String output (#8963) (Grazie @derek-xia!)
- Riaggiungere Get-HotFix cmdlet (#10740)
- Renderlo utilizzabile Add-Type in applicazioni che ospitano PowerShell (#10587)
- Usa un ordine di valutazione più efficace in LanguagePrimitives.IsNullLike() (#10781) (Grazie @vexx32!)
- Migliorare la gestione degli input a raccolte miste e dei flussi di input a canali in Format-Hex (#8674) (Grazie @vexx32!)
- Usa la conversione di tipo nelle hashtable SSHConnection quando il valore non corrisponde al tipo atteso (#10720) (Grazie @SeeminglyScience!)
- Correggi Get-Content -ReadCount 0 comportamento quando -TotalCount è impostato (#10749) (Grazie @eugenesmlv!)
- Messaggio di errore di accesso rifiutato di riformulazione in Get-WinEvent (#10639) (Grazie @iSazonov!)
- Abilita il completamento delle tabulazioni per l'assegnazione di variabili che sono enum o tipo vincolato (#10646)
- Rimuovere la proprietà remota SourceLength inutilizzata che causa problemi di formattazione (#10765)
- Aggiungi -Delimiter parametro a ConvertFrom-StringData (#10665) (Grazie @steviecoaster!)
- Aggiungi parametro posizionale per ScriptBlock quando usi Invoke-Command con SSH (#10721) (Grazie @machgo!)
- Mostra le informazioni di contesto della linea se sono più righe ma senza nome di script per ConciseView (#10746)
- Aggiungi supporto per i percorsi \wsl$\ al provider del file system (#10674)
- Aggiungi il testo mancante del token per TokenKind.QuestionMark nel parser (#10706)
- Imposta la directory di lavoro corrente di ogni script in esecuzione ForEach-Object -Parallel nella stessa posizione dello script chiamante. (#10672)
- Sostituisci api-ms-win-core-file-l1-2-2.dll con Kernell32.dll per le API FindFirstStreamW e FindNextStreamW (#10680) (Grazie @iSazonov!)
- Modifica lo script di formattazione per renderlo più tollerante alla StrictMode (#10563)
- Aggiungi -SecurityDescriptorSDDL parametro a New-Service (#10483) (Grazie @kvprasoon!)
- Rimuovere l'output informativo, consolidare l'uso del ping in Test-Connection (#10478) (Grazie @vexx32!)
- Leggi i punti speciali di riparazione senza accedervi (#10662) (Grazie @iSazonov!)
- Uscita Clear-Host diretta al terminale (#10681) (Grazie @iSazonov!)
- Riaggiungere una nuova linea per raggruppare con Format-Table e -Property (#10653)
- Rimuovere [ValidateNotNullOrEmpty] da -InputObject su Get-Random per consentire la stringa vuota (#10644)
- Rendere l'algoritmo della distanza delle stringhe di suggerimenti insensibile a minuscole (#10549) (Grazie @iSazonov!)
- Correggere l'eccezione di riferimento nullo nell'elaborazione ForEach-Object -Parallel input (#10577)
- Aggiungi definizioni di policy di gruppo PowerShell (#10468)
- Aggiorna l'host della console per supportare le sequenze di controllo XTPUSHSGR/XTPOPSGR VT utilizzate in scenari di composabilità. (#10208)
- Aggiungi il parametro WorkingDirectory a Start-Job (#10324) (Grazie @davinci26!)
- Rimuovi il gestore di eventi che causava modifiche ai breakpoint e veniva erroneamente replicato al debugger dello spazio run host (#10503) (Grazie @KirkMunro!)
- Sostituisci api-ms-win-core-job-12-1-0.dll con Kernell32.dll in Microsoft.PowerShell.Commands.NativeMethods P/Invoke API(#10417) (Grazie @iSazonov!)
- Correggere l'output errato per New-Service nell'assegnazione delle variabili e -OutVariable (#10444) (Grazie @kvprasoon!)
- Correggere problemi globali con gli strumenti riguardanti il codice di uscita, i parametri della riga di comando e il percorso con spazi (#10461)
- Correggi la ricorsione in OneDrive - cambia FindFirstFileEx() per usare il tipo SafeFindHandle (#10405)
- Saltare il caricamento automatico di PSReadLine su Windows se il lettore di schermo NVDA è attivo (#10385)
- Aumentare le versioni dei moduli built-with-PowerShell alla 7.0.0.0 (#10356)
- Aggiungi un errore Add-Type se esiste già un tipo con lo stesso nome (#9609) (Grazie @iSazonov!)
Performance
- Evita di usare la chiusura in Parser.SaveError (#11006)
- Migliora la cache quando crei nuove istanze Regex (#10657) (Grazie @iSazonov!)
- Migliora l'elaborazione dei dati di tipo integrati in PowerShell da types.ps1xml, typesV3.ps1xml e GetEvent.types.ps1xml (#10898)
- Aggiorna PSConfiguration.ReadValueFromFile per renderlo più veloce ed efficiente in termini di memoria (#10839)
- Aggiungere piccoli miglioramenti nelle prestazioni per l'inizializzazione dello spazio di esecuzione (#10569) (Grazie @iSazonov!)
- Rendere ForEach-Object più veloce per i suoi scenari comunemente usati (#10454) e risolvi ForEach-Object -Parallel problema di prestazioni con molti spazi di esecuzione (#10455)
Pulizia del codice
- Modifica il testo del commento e degli elementi per soddisfare gli standard Microsoft (#11304)
- Problemi di stile pulizia in Compiler.cs (#10368) (Grazie @iSazonov!)
- Rimuovi il convertitore di tipo inutilizzato per CommaDelimitedStringCollection (#11000) (Grazie @iSazonov!)
- Stile di pulizia in InitialSessionState.cs (#10865) (Grazie @iSazonov!)
- Pulizia del codice per la classe PSSession (#11001)
- Rimuovere la funzione 'esegui Update-Help non funzionante da Get-Help quando Get-Help si avvia per la prima volta' (#10974)
- Problemi di stile di correzione (#10998) (Grazie @iSazonov!)
- Pulizia: usa l'alias di tipo integrato (#10882) (Grazie @iSazonov!)
- Rimuovi il tasto di impostazione inutilizzato ConsolePrompting ed evita la creazione di stringhe inutili quando si interroga l'impostazione ExecutionPolicy (#10985)
- Disattiva il controllo delle notifiche di aggiornamento per le build giornaliere (#10903) (Grazie @bergmeister!)
- Reinstate l'API di debug persa in #10338 (#10808)
- Rimuovere il riferimento WorkflowJobSourceAdapter che non viene più utilizzato (#10326) (Grazie @KirkMunro!)
- Cleanup COM interfaccia nel codice della lista di salto correggendo gli attributi PreserveSig (#9899) (Grazie @weltkante!)
- Aggiungi un commento che spiega perché -ia non è l'alias per -InformationAction parametro comune (#10703) (Grazie @KirkMunro!)
- Rinomina InvokeCommandCmdlet.cs in InvokeExpressionCommand.cs (#10659) (Grazie @kilasuit!)
- Aggiungi piccole pulizie di codice relative alle notifiche di aggiornamento (#10698)
- Rimuovi la logica del workflow obsoleta dagli script di configurazione remota (#10320) (Grazie @KirkMunro!)
- Aggiorna il formato di aiuto per usare il caso corretto (#10678) (Grazie @tnieto88!)
- Pulizia dei problemi in stile CodeFactor in arrivo nei commit nell'ultimo mese (#10591) (Grazie @iSazonov!)
- Correggi un errore di battitura nella descrizione della funzionalità sperimentale PSTernaryOperator (#10586) (Grazie @bergmeister!)
- Converti ActionPreference.Suspend il valore di enumerazione in uno stato riservato non supportato e rimuovi la restrizione sull'uso di ActionPreference.Ignora le variabili di preference (#10317) (Grazie @KirkMunro!)
- Sostituisci ArrayList con List<T> per ottenere un codice più leggibile e affidabile senza cambiare funzionalità (#10333) (Grazie @iSazonov!)
- Correggi lo stile del codice a TestConnectionCommand (#10439) (Grazie @vexx32!)
- Pulire AutomationEngine e rimuovere la chiamata extra al metodo SetSessionStateDrive (#10416) (Grazie @iSazonov!)
- Rinomina ParameterSetName predefinito in Delimiter per ConvertTo-Csv e ConvertFrom-Csv (#10425)
Tools
- Aggiunge l'impostazione predefinita per la proprietà SDKToUse in modo che si costruisca in VS (#11085)
- Install-Powershell.ps1: Aggiungi un parametro per l'installazione MSI (#10921) (Grazie @MJECloud!)
- Aggiungi esempi base per install-powershell.ps1 (#10914) (Grazie @kilasuit!)
- Fai Install-PowerShellRemoting.ps1 gestione della stringa vuota nel parametro PowerShellHome (#10526) (Grazie @Orca88!)
- Passa da /etc/lsb-release a /etc/os-release in install-powershell.sh (#10773) (Grazie @Himura2la!)
- Controlla pwsh.exe e pwsh nella versione quotidiana su Windows (#10738) (Grazie @centreboard!)
- Rimuovere il rubinetto inutile nel installpsh-osx.sh (#10752)
- Aggiornamento install-powershell.ps1 per controllare la build quotidiana già installata (#10489)
Test
- Rendere in attesa il test DSC inaffidabile (#11131)
- Correggi il test stringdata per validare correttamente le chiavi delle hashtable (#10810)
- Moduli di test scarica (#11061) (Grazie @iSazonov!)
- Aumentare il tempo tra i tentativi di test dell'URL (#11015)
- Aggiornare i test per descrivere accuratamente le azioni di test. (#10928) (Grazie @romero126!)
- Saltare temporaneamente il test instabile TestAppDomainProcessExitEvenHandlerNotLeaking (#10827)
- Rendi stabile il test di perdita del gestore di eventi (#10790)
- Sync maiuscolo in CI YAML (#10767) (Grazie @RDIL!)
- Test aggiunto per la correzione della perdita del gestore eventi (#10768)
- Aggiungi Get-ChildItem test (#10507) (Grazie @iSazonov!)
- Sostituire il linguaggio ambiguo dei test da switch a parameter per accuratezza (#10666) (Grazie @romero126!)
- Aggiungi un controllo sperimentale ai test di ForEach-Object -Parallel (#10354) (Grazie @KirkMunro!)
- Test di aggiornamento per la validazione Alpine (#10428)
Miglioramenti nella costruzione e nel pacchetto
- Correggi la firma dei pacchetti Nuget per la compilazione del Pacchetto Coordinato (#11316)
- Aggiorna le dipendenze da PowerShell Gallery e NuGet (#11323)
- Spostare Microsoft.ApplicationInsights da 2.11.0 a 2.12.0 (#11305)
- Spostare Microsoft.CodeAnalysis.CSharp da 3.3.1 a 3.4.0 (#11265)
- Aggiorna i pacchetti per Debian 10 e 11 (#11236)
- Abilitare funzionalità sperimentali solo prima di RC (#11162)
- Aggiorna la versione minima di macOS (#11163)
- Spostare NJsonSchema da 10.0.27 a 10.0.28 (#11170)
- Aggiornamento dei link in README.md e metadata.json per Preview.5 (#10854)
- Seleziona i file per i test di conformità di proprietà di PowerShell (#10837)
- Permette al pacchetto msix di win7x86 di costruirsi. (Interno 10515)
- Consentire il passaggio di versioni semantiche alla funzione NormalizeVersion (#11087)
- Spostare il framework core di .NET a 3.1-preview.3 (#11079)
- Spostare PSReadLine da 2.0.0-beta5 a 2.0.0-beta6 in /src/Modules (#11078)
- Spostare Newtonsoft.Json da 12.0.2 a 12.0.3 (#11037) (#11038)
- Aggiungi i pacchetti Debian 10, 11 e CentOS 8 (#11028)
- Carica Build-Info file Json con il campo ReleaseDate (#10986)
- Spostare .NET core framework a 3.1-preview.2 (#10993)
- Abilita la build del pacchetto x86 MSIX (#10934)
- Aggiorna l'URL dello script di installazione dotnet SDK in build.psm1 (#10927)
- Sostituire Markdig. Firmato da 0.17.1 a 0.18.0 (#10887)
- Spostare ThreadJob dalla 2.0.1 alla 2.0.2 (#10886)
- Aggiornare il modulo AppX Manifest and Packaging per conformarsi ai requisiti del MS Store (#10878)
- Aggiorna il riferimento del pacchetto per PowerShell SDK a preview.5 (Interno 10295)
- Aggiornamento ThirdPartyNotices.txt (#10834)
- Sposta Microsoft.PowerShell.Native a 7.0.0-preview.3 (#10826)
- Spostare Microsoft.ApplicationInsights dalla 2.10.0 alla 2.11.0 (#10608)
- Spostare NJsonSchema da 10.0.24 a 10.0.27 (#10756)
- Aggiungi il supporto MacPort al sistema di compilazione (#10736) (Grazie @Lucius-Q-User!)
- Spostare PackageManagement dalla 1.4.4 alla 1.4.5 (#10728)
- Spostare NJsonSchema da 10.0.23 a 10.0.24 (#10635)
- Aggiungi variabile di ambiente per differenziare la telemetria client/server in MSI (#10612)
- Spostare PSDesiredStateConfiguration da 2.0.3 a 2.0.4 (#10603)
- Spostare Microsoft.CodeAnalysis.CSharp da 3.2.1 a 3.3.1 (#10607)
- Aggiornamento a .Net Core 3.0 RTM (#10604) (Grazie @bergmeister!)
- Aggiornare il packaging di MSIX per far sì che la versione sia necessaria per Windows Store (#10588)
- Spostare PowerShellGet dalla versione 2.2 alla 2.2.1 (#10382)
- Spostare la versione di PackageManagement dalla 1.4.3 alla 1.4.4 (#10383)
- Aggiornamento README.md e metadata.json per 7.0.0-preview.4 (Interno 10011)
- Aggiorna la versione .Net Core 3.0 da Preview 9 a RC1 (#10552) (Grazie @bergmeister!)
- Generazione di liste Feature Experimental Fix (Internal 9996)
- Spostare la versione PSReadLine dalla 2.0.0-beta4 alla 2.0.0-beta5 (#10536)
- Correggi lo script di build release per impostare il release tag
- Aggiornamento versione di Microsoft.PowerShell.Native per 7.0.0-preview.2 (#10519)
- Aggiorna a Netcoreapp3.0 preview9 (#10484) (Grazie @bergmeister!)
- Assicurati che la build coordinata giornaliera sappia che è una build giornaliera (#10464)
- Aggiorna la build combinata del pacchetto per rilasciare le build giornaliere (#10449)
- Rimuovi il riferimento all'appveyor (#10445) (Grazie @RDIL!)
- Spostare la versione di NJsonSchema dalla 10.0.22 alla 10.0.23 (#10421)
- Rimuovere la cancellazione della cartella di compilazione linux-x64 perché alcune dipendenze per Alpine la necessitano (#10407)
Documentazione e Contenuti di Aiuto
- Rifattoria i log delle modifiche in un log per rilascio (#11165)
- Correggere FWLinks per i documenti di assistenza online di PowerShell 7 (#11071)
- Aggiornamento CONTRIBUTING.md (#11096) (Grazie @mklement0!)
- Link per correggere la documentazione di installazione in README.md (#11083)
- Aggiunge esempi al install-powershell.ps1 script (#11024) (Grazie @kilasuit!)
- Correzione di Select-String enfasi e Import-DscResource in CHANGELOG.md (#10890)
- Rimuovi il link obsoleto da powershell-beginners-guide.md (#10926)
- Registri di modifiche stabili e di manutenzione per fusione (#10527)
- Aggiornamento versione usata di .NET nella documentazione di compilazione (#10775) (Grazie @Greg-Smulko!)
- Sostituire i link da MSDN a Microsoft Learn in powershell-beginners-guide.md (#10778) (Grazie @iSazonov!)
- Link panoramica per correggere DSC rotto (#10702)
- Aggiorna Support_Question.md per collegare Stack Overflow come altra risorsa della community (#10638) (Grazie @mklement0!)
- Aggiungi architettura del processore al modello di richiesta di distribuzione (#10661)
- Aggiungi nuovo libro PowerShell MoL alla documentazione di apprendimento PowerShell (#10602)
- Aggiornamento README.md e metadati per le versioni v6.1.6 e v6.2.3 (#10523)
- Correggi un errore di battitura in README.md (#10465) (Grazie @vedhasp!)
- Aggiungi un riferimento al modulo PSKoans nella documentazione delle Risorse di Apprendimento (#10369) (Grazie @vexx32!)
- Aggiornamento README.md e metadata.json per 7.0.0-preview.3 (#10393)