Condividi tramite


Novità di PowerShell Core 6.2

La versione PowerShell Core 6.2 si è concentrata su miglioramenti delle prestazioni, correzioni di bug e miglioramenti più piccoli di cmdlet e linguaggio che migliorano la qualità. Per vedere l'elenco completo dei miglioramenti, consulta i nostri dettagliati changelog su GitHub.

Funzionalità sperimentali

In precedenza, attivavamo il supporto per le Funzionalità Sperimentali. Nella versione 6.2, abbiamo quattro funzionalità sperimentali da provare. Per favore, fornisci un feedback affinché possiamo apportare miglioramenti e decidere se la funzione merita di essere promossa a uno status mainstream.

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

Suggerimenti di comando non trovato

Questa funzione utilizza il fuzzy matching per trovare suggerimenti su comandi o cmdlet che potresti aver digitato male.

Enable-ExperimentalFeature -Name PSCommandNotFoundSuggestion

Example

In questo esempio, il nome cmdlet scritto male è corrispondente in modo sfocato a diverse proposte da più probabili a meno probabili.

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.

Lottaggio Implicito a Distanza

Quando si utilizza il remot implicito in una pipeline, PowerShell tratta ogni comando nella pipeline in modo indipendente. Gli oggetti vengono ripetutamente serializzati e de-serialized collegati tra il client e il sistema remoto durante l'esecuzione della pipeline.

Con questa caratteristica, PowerShell analizza la pipeline per determinare se il comando è sicuro da eseguire e se esiste sul sistema target. Quando è vero, PowerShell esegue l'intera pipeline da remoto e solo serializza i risultati de-serializes e i risultati vengono restituiti al client.

Enable-ExperimentalFeature -Name PSImplicitRemotingBatching

Un test reale di Get-Process | Sort-Object over localhost diminuisce da 10-15 secondi a 20-30 millisecondi. La funzione deve essere abilitata solo sul client. Non sono necessarie modifiche sul server.

Variazione temporanea

Enable-ExperimentalFeature -Name PSTempDrive

Se usi PowerShell Core su diversi sistemi operativi, scoprirai che la variabile di ambiente per trovare la directory temporanea è diversa su Windows, macOS e Linux! Con questa funzione, ottieni una chiamata Temp:PSDrive che viene automaticamente mappata alla cartella temporanea del sistema operativo che stai usando.

Example

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

Tieni presente che i comandi file nativi (come ls su Linux) non sono a conoscenza di PSDrives e non vedranno questo Temp: disco.

Espansione delle abbreviazioni

I cmdlet PowerShell dovrebbero avere sostantivi descrittivi. Questo porta a nomi lunghi e più difficili da digitare. Questa funzione ti permette semplicemente di digitare i caratteri maiuscoli del cmdlet e usare il completamento tab per trovare una corrispondenza.

Enable-ExperimentalFeature -Name PSUseAbbreviationExpansion

Example

PS> i-arsavsf

Se premi tab e hai installato il modulo Azure PowerShell Az , si completerà automaticamente per:

PS> Import-AzRecoveryServicesAsrVaultSettingsFile

Annotazioni

Questa funzione è pensata per essere utilizzata in modo interattivo. Le forme abbreviate dei cmdlet non possono essere eseguite. Questa funzione non sostituisce gli alias.

Modifiche che interrompono la compatibilità

  • Correggi -NoEnumerate il comportamento in Write-Output modo che sia coerente con Windows PowerShell. (#9069)
  • Fai in modo Join-String -InputObject 1,2,3 che il risultato sia uguale al 1,2,3 | Join-String risultato (#8611) (Grazie @sethvs!)
  • Aggiungi -StableSort-Object a e test correlati (#7862) (Grazie @KirkMunro!)
  • Migliorare Start-Sleep il cmdlet per accettare frazioni di secondo (#8537) (Grazie @Prototyyppi!)
  • Modifica l'hashtable per usare OrdinalIgnoreCase in case-insensitive tutte le culture (#8566)
  • Correggi LiteralPath in Import-Csv per associare all'output Get-ChildItem (#8277) (Grazie @iSazonov!)
  • Non salta più una colonna senza nome se viene usato il delimitatore a doppia virgoletta in Import-Csv (#7899) (Grazie @Topping!)
  • Get-ExperimentalFeature Non ha -ListAvailable più switch (#8318)
  • Il parametro di debug ora viene impostato $DebugPreference su Continua invece che su Inquire (#8195) (Grazie @KirkMunro!)
  • Honor -OutputFormat se specificato in un comando non interattivo, reindirizzato, codificato usato con pwsh (#8115)
  • Carica l'assemblaggio dal percorso della base del modulo prima di provare a caricare dal GAC (#8073)
  • Rimuovere tilde dai pacchetti di anteprima Linux (#8244)
  • Sposta l'elaborazione di -WorkingDirectory prima dell'elaborazione dei profili (#8079)
  • Non aggiungere PATHEXT variabile di ambiente su Unix (#7697) (Grazie @iSazonov!)

Problemi noti

  • Il remoting sulle piattaforme Windows IOT ARM ha un problema nel caricare i moduli. Vedi (#8053)

Aggiornamenti generali e correzioni

  • Abilita il completamento delle schede insensibili a maiuscole per file e cartelle nel filesystem con sensibilità a maiuscole e minuscole (#8128)
  • Rendere pubblici PSVersionInfo.PSVersion e PSVersionInfo.PSEdition (#8054) (Grazie @KirkMunro!)
  • Inferenza del tipo di aggiunta per $_ / $PSItem in catch{ } blocchi (#8020) (Grazie @vexx32!)
  • Correggi l'inferenza statica di invocazione del metodo (#8018) (Grazie @SeeminglyScience!)
  • Crea tipi inferiti per Select-Object, Group-Object, PSObject e Hashtable (#7231) (Grazie@powercode!)
  • Supporto chiamata metodo con ByRef-like parametri di tipo (#7721)
  • Gestire il caso in cui il percorso del modulo PowerShell di Windows è già nel PSModulePath dell'ambiente (#7727)
  • Abilita SecureString i cmdlet per non-Windows memorizzando il testo semplice (#9199)
  • Messaggio di errore migliorato su non-Windows quando importi clixml con securestring (#7997)
  • Aggiungo il parametro ReplyTo a Send-MailMessage (#8727) (Grazie @replicaJunction!)
  • Aggiungi messaggio Obsoleto a Send-MailMessage (#9178)
  • Correzione Restart-Computer da risolvere localhost quando WinRM non è presente (#9160)
  • Errore di Start-Job terminazione throw quando PowerShell è ospitato (#9128)
  • Aggiungi acceleratori e suffissi in stile C# per ushort, uint, ulong e short letterali (#7813) (Grazie @vexx32!)
  • Aggiunti nuovi suffissi per i letterali numerici - vedi about_Numeric_Literals (#7901) (Grazie @vexx32!)
  • Segnala correttamente il livello di impatto quando SupportsShouldProcess non è impostato su 'true' (#8209) (Grazie @vexx32!)
  • Problemi di Fix Request Charset nei Web Cmdlet (#8742) (Grazie @markekraus!)
  • Risolvi il problema con 100-continue i Web Cmdlets (#8679) (Grazie @markekraus!)
  • Risolvi il problema di blocco file con i web cmdlet (#7676) (Grazie @Claustn!)
  • Corregge il problema di parsing della code page in Invoke-RestMethod (#8694) (Grazie @markekraus!)
  • Refactoring ConvertTo-Json per esporre JsonObject.ConvertToJson come API pubblica (#8682)
  • Aggiungi la profondità ConvertFrom-Json massima configurabile con -Depth (#8199) (Grazie @louistio!)
  • Aggiungi il parametro EscapeHandling nel ConvertTo-Json cmdlet (#7775) (Grazie @iSazonov!)
  • Aggiungi -CustomPipeName a pwsh e Enter-PSHostProcess (#8889)
  • Abilita la creazione di collegamenti simbolici relativi su Windows con New-Item (#8783)
  • Consentire agli utenti Windows in modalità sviluppatore di creare symlink senza elevazione (#8534)
  • Abilita Write-Information l'accettazione $null (#8774)
  • Correzione Get-Help per funzioni avanzate con contenuti di aiuto MAML (#8353)
  • Correggi Get-Help il problema di PSTypeName con -Parameter quando viene dichiarato un solo parametro (#8754) (Grazie @pougetat!)
  • Correzione del calcolo dei token eseguita Get-Help su ScriptBlock per l'aiuto nei commenti. (#8238) (Grazie @hubuk!)
  • Cambia Get-Help il parametro cmdlet -Parameter così accetta array di stringhe (#8454) (Grazie @sethvs!)
  • Risolvi il PAGER se il suo percorso contiene spazi (#8571) (Grazie @pougetat!)
  • Aggiungi un prompt all'uso di less nella funzione 'help' per indicare all'utente come uscire (#7998)
  • Aggiungi tipi di support enum e char in Format-Hex cmdlet (#8191) (Grazie @iSazonov!)
  • Rimuovere ShouldProcess da Format-Hex (#8178)
  • Aggiungi nuovi parametri Format-Hex di Offset e Count e rifattorizza il cmdlet (#7877) (Grazie @iSazonov!)
  • Consenti 'name' come tasto alias per 'label' in ConvertTo-Html, permette che la voce 'width' sia un intero (#8426) (Grazie @mklement0!)
  • Fai funzionare di nuovo le proprietà calcolate basate su blocchi di script in ConvertTo-Html (#8427) (Grazie @mklement0!)
  • Aggiungi un cmdlet Join-String per creare testo dall'input della pipeline (#7660) (Grazie @powercode!)
  • Fix Join-String cmdlet FormatString parameter logic (#8449) (Grazie @sethvs!)
  • Torna Clear-Host a usare $RAWUI e liberare al lavoro tramite remoting (#8609)
  • Cambia Clear-Host in chiamata [console]::clear semplice e rimuovi l'alias chiaro da Unix (#8603)
  • Correggi LiteralPath in Import-Csv per associare all'output Get-ChildItem (#8277) (Grazie @iSazonov!)
  • la funzione help non dovrebbe usare il cercapersone per AliasHelpInfo (#8552)
  • Aggiungi -UseMinimalHeader to Start-Transcript per minimizzare l'intestazione della trascrizione (#8402) (Grazie @lukexjeremy!)
  • Add Enable-ExperimentalFeature e Disable-ExperimentalFeature cmdlets (#8318)
  • Esponi tutti i cmdlet di PSDiagnostics se logman.exe disponibile (#8366)
  • Rimuovere il parametro Persist dalla New-PSDrivenon-Windows piattaforma (#8291) (Grazie @lukexjeremy!)
  • Aggiungi supporto per cd + (#7206) (Grazie @bergmeister!)
  • Abilita Set-Location -LiteralPath la funzione di lavoro con cartelle nominate - e + (#8089)
  • Test-Path returns $false quando viene fornito un valore vuoto o $null di percorso (#8080) (Grazie @vexx32!)
  • Consentire il ritorno di parametro dinamico anche se il percorso non corrisponde a nessun provider (#7957)
  • Supporto Get-PSHostProcessInfo e Enter-PSHostProcess su piattaforme Unix (#8232)
  • Ridurre le allocazioni nel Get-Content cmdlet (#8103) (Grazie @iSazonov!)
  • Abilita Add-Content la condivisione dell'accesso alla lettura con altri strumenti durante la scrittura dei contenuti (#8091)
  • Get/Add-Content lancia errore migliorato quando mira a un contenitore (#7823) (Grazie @kvprasoon!)
  • Aggiungi -Namei parametri e -ListAvailable-NoUserOverrides a Get-Culture cmdlet (#7702) (Grazie@iSazonov!)
  • Aggiungi un attributo unificato per il completamento del parametro di codifica . (#7732) (Grazie @ThreeFive-O!)
  • Consentire ID numerici e nome delle code page registrate nei parametri di codifica (#7636) (Grazie @iSazonov!)
  • Correzione Rename-Item -Path con il personaggio jolly (#7398) (Grazie @kwkam!)
  • Quando si usa Start-Transcript un file, il file è vuoto invece di eliminarlo (#8131) (Grazie @paalbra!)
  • Crea Add-Type file open source con FileAccess.Read e FileShare.Read esplicitamente (#7915) (Grazie @IISResetMe!)
  • Correzione Enter-PSSession -ContainerId per l'ultima versione di Windows (#7883)
  • Assicurati che la proprietà NestedModules venga popolata da Test-ModuleManifest (#7859)
  • Aggiungi %F la custodia alla Get-Date -UFormat (#7630) (Grazie @britishben!)
  • Fix Set-Service -Status Stopped to stop services with dependance (#5525) (Grazie @zhenggu!)