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
inWrite-Output
in modo che sia coerente con Windows PowerShell. (9069) - Rendere
Join-String -InputObject 1,2,3
il risultato uguale al1,2,3 | Join-String
risultato (#8611) (Grazie) @sethvs!) - Aggiungere
-Stable
aSort-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'outputGet-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
incatch{ }
blocchi (#8020) (grazie) @vexx32!) - Correzione dell'inferenza del tipo di chiamata al metodo statico (#8018) (Grazie @SeeminglyScience!)
- Creare tipi posticipati per
Select-Object
, PSObjectGroup-Object
e 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 utilizzarelocalhost
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 eEnter-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'outputGet-ChildItem
(#8277) (grazie) @iSazonov!) - La funzione help non deve utilizzare pager per AliasHelpInfo (8552)
- Aggiungere
-UseMinimalHeader
aStart-Transcript
per ridurre al minimo l'intestazione della trascrizione (#8402) (grazie) @lukexjeremy!) - Aggiunta dei cmdlet
Enable-ExperimentalFeature
eDisable-ExperimentalFeature
(8318) - Esposizione di tutti i cmdlet da PSDiagnostics se logman.exe è disponibile (8366)
- Rimuovere il parametro Persist dalla
New-PSDrive
non-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
eEnter-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-Name
i parametri e-ListAvailable
alGet-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 aGet-Date
-UFormat (#7630) (grazie) @britishben!) - Correzione
Set-Service -Status Stopped
per arrestare i servizi con dipendenze (#5525) (grazie) @zhenggu!)