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. Inviare 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) - Risultato
Join-String -InputObject 1,2,3
uguale al1,2,3 | Join-String
risultato (#8611) (grazie) @sethvs!) - Aggiungere
-Stable
aSort-Object
test correlati e (#7862) (grazie) @KirkMunro!) - Migliorare il
Start-Sleep
cmdlet per accettare i 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 per
Import-Csv
l'associazione all'outputGet-ChildItem
(#8277) (grazie) @iSazonov!) - Non ignora più una colonna senza nome se viene usato il delimitatore virgolette doppie in
Import-Csv
(#7899) (grazie) @Topping!) -
Get-ExperimentalFeature
non include più switch-ListAvailable
(8318) - Il parametro Debug ora imposta
$DebugPreference
su Continue invece di Inquire (#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 PUBBLICA 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!)
- Create tipi dedotti per
Select-Object
,Group-Object
, PSObject 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!)
- Segnala correttamente il livello di impatto quando SupportsShouldProcess non è impostato su "true" (#8209) (grazie) @vexx32!)
- Risolvere i problemi relativi ai set di caratteri delle richieste 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 una profondità massima configurabile in
ConvertFrom-Json
con -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 del cmdlet -Parameter in modo che accetti matrici di stringhe (#8454) (grazie) @sethvs!) - Risolvere 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 char di supporto nel
Format-Hex
cmdlet (#8191) (grazie) @iSazonov!) - Rimozione di ShouldProcess da
Format-Hex
(8178) - Aggiungere nuovi parametri Offset e Count a
Format-Hex
e refactoring del cmdlet (#7877) (grazie) @iSazonov!) - Consenti 'name' come chiave alias per 'label' in
ConvertTo-Html
, consenti che la voce 'width' sia un numero intero (#8426) (grazie) @mklement0!) - Rendere nuovamente funzionanti 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
Import-Csv
per associare all'outputGet-ChildItem
(#8277) (Grazie @iSazonov!) - La funzione help non deve utilizzare pager per AliasHelpInfo (8552)
- Aggiungi
-UseMinimalHeader
a per ridurre al minimo l'intestazioneStart-Transcript
di 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 Persistent dalla
New-PSDrive
non-Windows
piattaforma (#8291) (grazie) @lukexjeremy!) - Aggiungere il 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
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 durante la destinazione di un contenitore (#7823) (grazie) @kvprasoon!) - Aggiungere
-Name
parametri-NoUserOverrides
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 pagine codici registrate nei parametri di codifica (#7636) (grazie) @iSazonov!)
- Correzione
Rename-Item -Path
con caratteri jolly (#7398) (grazie) @kwkam!) - Quando si usa
Start-Transcript
e il file esiste, file vuoto anziché eliminare (#8131) (grazie) @paalbra!) - Rendere
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) - Aggiungere
%F
maiuscole e minuscole aGet-Date
-UFormat (#7630) (grazie) @britishben!) - Correzione
Set-Service -Status Stopped
per arrestare i servizi con dipendenze (#5525) (grazie) @zhenggu!)