Novità di PowerShell Core 6.2

La versione di PowerShell Core 6.2 è incentrata sul miglioramento delle prestazioni, su correzioni di bug e su miglioramenti di cmdlet e linguaggi di entità ridotta che contribuiscono ad aumentare la qualità. Per visualizzare un elenco completo dei miglioramenti, consultare i log delle modifiche su GitHub.

Funzionalità sperimentali

In precedenza è stato abilitato il supporto per le funzionalità sperimentali. Nella versione 6.2 sono disponibili quattro funzionalità sperimentali da provare. Fornire commenti e suggerimenti in modo da poter apportare miglioramenti e decidere se la funzionalità vale la pena promuovere lo stato mainstream.

Usare Get-ExperimentalFeature per ottenere un elenco delle funzionalità sperimentali disponibili. È possibile abilitare o disabilitare queste funzionalità con Enable-ExperimentalFeature e Disable-ExperimentalFeature.

Suggerimenti per comandi non trovati

Questa funzionalità usa la corrispondenza fuzzy per trovare suggerimenti per comandi o cmdlet che potrebbero essere stati digitati in modo errato.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Esempio

In questo esempio viene eseguita una corrispondenza fuzzy del nome del cmdlet con alcuni suggerimenti, dal più probabile al meno probabile.

Get-Commnd
Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file,
or operable program. Check the spelling of the name, or if a path was included, verify that the path
is correct and try again.
At line:1 char:1
+ Get-Commnd
+ ~~~~~~~~~~
+ CategoryInfo          : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException


Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module,
Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.

Comunicazione remota implicita in batch

Quando si usa la comunicazione remota implicita in una pipeline, PowerShell considera ogni comando nella pipeline in modo indipendente. Gli oggetti vengono ripetutamente serializzati e de-serialized tra il client e il sistema remoto nell'esecuzione della pipeline.

Con questa funzionalità, PowerShell analizza la pipeline per determinare se il comando è eseguibile in modo sicuro ed è presente nel sistema di destinazione. Se True, PowerShell esegue l'intera pipeline in modalità remota e si limita a serializzare e de-serializes i risultati nuovamente nel client.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Un test reale di Get-Process | Sort-Object tramite localhost si riduce da 10-15 secondi a circa 20-30 millisecondi. È sufficiente che la funzionalità sia abilitata nel client. Non sono necessarie modifiche nel server.

Unità Temp

Enable-ExperimentalFeature -Name PSTempDrive

Se si usa PowerShell Core in sistemi operativi diversi, sarà possibile osservare che la variabile di ambiente per individuare la directory temporanea è diversa in Windows, macOS e Linux. Con questa funzionalità, un'unità PowerShell denominata Temp: viene automaticamente sottoposta a mapping alla cartella temporanea per il sistema operativo in uso.

Esempio

PS> "Hello World!" > Temp:/hello.txt
PS> Get-Content Temp:/hello.txt
Hello World!

Tenere presente che i comandi file nativi (ad esempio ls in Linux) non riconoscono le unità PowerShell e non visualizzano questa unità Temp:.

Espansione di abbreviazioni

I cmdlet PowerShell devono avere nomi descrittivi. Vengono quindi generati nomi lunghi, più difficili da digitare. Questa funzionalità consente di digitare i caratteri maiuscoli del cmdlet e usare il completamento tramite TAB per trovare una corrispondenza.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Esempio

PS> i-arsavsf

Se si preme il tasto TAB ed è stato installato il modulo Az di Azure PowerShell, verrà eseguito il completamento automatico in:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Nota

Questa funzionalità deve essere usata in modo interattivo. Non è possibile eseguire forme abbreviate dei cmdlet. Questa funzionalità non rappresenta una sostituzione per gli alias.

Modifiche di rilievo

  • Correzione del comportamento di -NoEnumerate in Write-Output in modo che sia coerente con Windows PowerShell. (9069)
  • Rendere Join-String -InputObject 1,2,3 il risultato uguale al 1,2,3 | Join-String risultato (#8611) (Grazie) @sethvs!)
  • Aggiungere -Stable a Sort-Object e test correlati (#7862) (grazie @KirkMunro!)
  • Migliorare il Start-Sleep cmdlet per accettare secondi frazionari (#8537) (grazie @Prototyyppi!)
  • Modifica della tabella hash in modo che OrdinalIgnoreCase sia case-insensitive in tutte le impostazioni cultura (8566)
  • Correzione di LiteralPath in Import-Csv per associare all'output Get-ChildItem (#8277) (Grazie @iSazonov!)
  • Non ignora più una colonna senza nome se il delimitatore di virgolette doppie viene usato in Import-Csv (#7899) (Grazie) @Topping!)
  • Get-ExperimentalFeature non include più switch -ListAvailable (8318)
  • Il parametro debug imposta $DebugPreference ora su Continua invece di Ricerca (#8195) (grazie) @KirkMunro!)
  • Supporto di -OutputFormat se specificato in un comando non interattivo, reindirizzato e codificato, usato con pwsh (8115)
  • Caricamento dell'assembly dal percorso di base del modulo prima di provare a eseguire il caricamento dalla Global Assembly Cache (8073)
  • Rimozione della tilde dai pacchetti di anteprima Linux (8244)
  • Spostamento dell'elaborazione di -WorkingDirectory prima dell'elaborazione dei profili (8079)
  • Non aggiungere PATHEXT variabile di ambiente in Unix (#7697) (grazie) @iSazonov!)

Problemi noti

  • La comunicazione remota nelle piattaforme ARM di Windows IoT non riesce a caricare i moduli. Vedere (8053)

Correzioni e aggiornamenti generali

  • Abilitazione del completamento tramite TAB senza distinzione tra maiuscole e minuscole per file e cartelle nel file system senza distinzione tra maiuscole e minuscole (8128)
  • Rendere pubblico PSVersionInfo.PSVersion e PSVersionInfo.PSEdition (#8054) (grazie @KirkMunro!)
  • Aggiungere l'inferenza del tipo per $_ / $PSItem in catch{ } blocchi (#8020) (grazie) @vexx32!)
  • Correzione dell'inferenza del tipo di chiamata al metodo statico (#8018) (Grazie @SeeminglyScience!)
  • Creare tipi posticipati per Select-Object, PSObjectGroup-Objecte Hashtable (#7231) (grazie)@powercode!)
  • Supporto del metodo di chiamata con parametri di tipo ByRef-like (7721)
  • Gestione del caso in cui il percorso del modulo Windows PowerShell è già in PSModulePath nell'ambiente (7727)
  • Abilitazione dei cmdlet SecureString per sistemi non Windows archiviando il testo normale (9199)
  • Miglioramento del messaggio di errore in ambienti non Windows in caso di importazione di clixml con securestring (7997)
  • Aggiunta del parametro ReplyTo a Send-MailMessage (#8727) (grazie) @replicaJunction!)
  • Aggiunta del messaggio di obsolescenza a Send-MailMessage (9178)
  • Correzione di Restart-Computer per utilizzare localhost quando WinRM non è presente (9160)
  • Impostazione di Start-Job per la generazione di un errore fatale quando PowerShell è ospitato (9128)
  • Aggiungere acceleratori di tipi di stile C# e suffissi per ushort, uint, ulong e valori letterali brevi (#7813) (Grazie @vexx32!)
  • Aggiunta di nuovi suffissi per valori letterali numerici - vedere about_Numeric_Literals (#7901) (Grazie) @vexx32!)
  • Livello di impatto del report corretto quando SupportShouldProcess non è impostato su 'true' (#8209) (grazie @vexx32!)
  • Correzione dei problemi di charset di richiesta nei cmdlet Web (#8742) (grazie) @markekraus!)
  • Correzione del problema previsto 100-continue con i cmdlet Web (#8679) (grazie) @markekraus!)
  • Correzione del problema di blocco dei file con i cmdlet Web (#7676) (grazie) @Claustn!)
  • Correzione del problema di analisi della tabella codici in Invoke-RestMethod (#8694) (grazie) @markekraus!)
  • Refactoring di ConvertTo-Json per esporre JsonObject.ConvertToJson come API pubblica (8682)
  • Aggiungere profondità massima configurabile con ConvertFrom-Json -Depth (#8199) (Grazie @louistio!)
  • Aggiungere il parametro EscapeHandling nel ConvertTo-Json cmdlet (#7775) (grazie) @iSazonov!)
  • Aggiunta di -CustomPipeName a pwsh e Enter-PSHostProcess (8889)
  • Possibilità di creare collegamenti simbolici relativi in Windows con New-Item (8783)
  • Possibilità per gli utenti di Windows in modalità sviluppatore di creare collegamenti simbolici senza elevazione dei privilegi (8534)
  • Possibilità per Write-Information di accettare $null (8774)
  • Correzione di Get-Help per funzioni avanzate con il contenuto della guida MAML (8353)
  • Correzione del Get-Help problema PSTypeName con -Parameter quando viene dichiarato un solo parametro (#8754) (Grazie) @pougetat!)
  • Correzione del calcolo token per Get-Help in esecuzione in ScriptBlock per la guida dei commenti. (#8238) (Grazie) @hubuk!)
  • Modificare Get-Help il parametro cmdlet -Parameter in modo da accettare matrici di stringhe (#8454) (grazie @sethvs!)
  • Risolvere il problema PAGER se il percorso contiene spazi (#8571) (grazie @pougetat!)
  • Aggiunta di un prompt all'uso di less nella funzione 'help' per indicare all'utente come disconnettersi (7998)
  • Aggiungere tipi di enumerazione e caratteri di supporto nel Format-Hex cmdlet (#8191) (Grazie @iSazonov!)
  • Rimozione di ShouldProcess da Format-Hex (8178)
  • Aggiungere nuovi parametri Offset e Count al Format-Hex cmdlet (#7877) (grazie) @iSazonov!)
  • Consenti 'name' come chiave alias per 'label' in ConvertTo-Html, consenti la voce 'width' come intero (#8426) (Grazie) @mklement0!)
  • Creare di nuovo le proprietà calcolate basate su scriptblock in ConvertTo-Html (#8427) (Grazie @mklement0!)
  • Aggiungere il cmdlet Join-String per la creazione di testo dall'input della pipeline (#7660) (Grazie) @powercode!)
  • Correzione Join-String della logica dei parametri FormatString del cmdlet (#8449) (grazie) @sethvs!)
  • Modifica di Clear-Host per l'uso di $RAWUI e clear per il funzionamento con comunicazione remota (8609)
  • Modifica di Clear-Host per rinominarlo semplicemente [console]::clear e rimozione dell'alias clear da Unix (8603)
  • Correzione di LiteralPath in per Import-Csv l'associazione all'output Get-ChildItem (#8277) (grazie) @iSazonov!)
  • La funzione help non deve utilizzare pager per AliasHelpInfo (8552)
  • Aggiungere -UseMinimalHeader a Start-Transcript per ridurre al minimo l'intestazione della trascrizione (#8402) (grazie) @lukexjeremy!)
  • Aggiunta dei cmdlet Enable-ExperimentalFeature e Disable-ExperimentalFeature (8318)
  • Esposizione di tutti i cmdlet da PSDiagnostics se logman.exe è disponibile (8366)
  • Rimuovere il parametro Persist dalla New-PSDrivenon-Windows piattaforma (#8291) (grazie) @lukexjeremy!)
  • Aggiunta del supporto per cd + (#7206) (grazie) @bergmeister!)
  • Abilitazione di Set-Location -LiteralPath per l'uso con cartelle denominate + e - (8089)
  • Test-Path restituisce $false quando viene specificato un valore vuoto o $null di percorso (#8080) (grazie) @vexx32!)
  • Parametro dinamico restituito anche se il percorso non corrisponde ad alcun provider (7957)
  • Supporto di Get-PSHostProcessInfo e Enter-PSHostProcess nelle piattaforme Unix (8232)
  • Ridurre le allocazioni nel Get-Content cmdlet (#8103) (grazie) @iSazonov!)
  • Possibilità per Add-Content di condividere l'accesso in lettura con altri strumenti durante la scrittura di contenuto (8091)
  • Get/Add-Content genera un errore migliorato quando la destinazione di un contenitore (#7823) (grazie) @kvprasoon!)
  • -NoUserOverrides Aggiungere -Namei parametri e -ListAvailable al Get-Culture cmdlet (#7702) (grazie)@iSazonov!)
  • Aggiunta di un attributo unificato per il completamento per il parametro Encoding. (#7732) (Grazie) @ThreeFive-O!)
  • Consenti ID numerici e nome delle tabelle codici registrate nei parametri di codifica (#7636) (grazie) @iSazonov!)
  • Correzione Rename-Item -Path con carattere jolly (#7398) (grazie) @kwkam!)
  • Quando si usa Start-Transcript e il file esiste, file vuoto anziché eliminare (#8131) (grazie @paalbra!)
  • Creare Add-Type open source file con FileAccess.Read e FileShare.Read in modo esplicito (#7915) (grazie@IISResetMe!)
  • Correzione di Enter-PSSession -ContainerId per le versioni di Windows più recenti (7883)
  • Garanzia di popolamento della proprietà NestedModules da parte di Test-ModuleManifest (7859)
  • Aggiungi %F maiuscole/minuscole a Get-Date -UFormat (#7630) (grazie) @britishben!)
  • Correzione Set-Service -Status Stopped per arrestare i servizi con dipendenze (#5525) (grazie) @zhenggu!)