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.
L'11 novembre 2020 abbiamo annunciato la disponibilità generale di PowerShell 7.1. Basandoci sulle basi stabilite in PowerShell 7.0, i nostri sforzi si sono concentrati sulle problematiche della comunità e includono numerosi miglioramenti e correzioni. Siamo impegnati a garantire che PowerShell rimanga una piattaforma stabile e performante.
PowerShell 7.1 include le seguenti funzionalità, aggiornamenti e cambiamenti di emergenza.
- PSReadLine 2.1.0, che include Predictive IntelliSense
- PowerShell 7.1 è stato pubblicato sul Microsoft Store
- Pacchetti di installazione aggiornati per le nuove versioni del sistema operativo con supporto per ARM64
- 4 nuove funzionalità sperimentali e 2 funzionalità sperimentali promosse al mainstream
- Diverse modifiche innovative per migliorare l'usabilità
Per un elenco completo delle modifiche, vedere CHANGELOG nel repository GitHub.
PSReadLine 2.1.0
PowerShell 7.1 include anche PSReadLine 2.1.0. Questa versione include Predictive IntelliSense. Per maggiori informazioni sulla funzione Predictive IntelliSense, consulta l'annuncio nel blog PowerShell.
Pacchetto di installazione del Microsoft Store
PowerShell 7.1 è stato pubblicato sul Microsoft Store. Puoi trovare la versione PowerShell sul sito web del Microsoft Store o nell'applicazione Store su Windows.
Vantaggi del pacchetto di Microsoft Store:
- Aggiornamenti automatici integrati in Windows
- Si integra con altri meccanismi di distribuzione software come Intune e SCCM
Annotazioni
Qualsiasi impostazione di configurazione a livello di sistema memorizzata $PSHOME non può essere modificata. Ciò include la configurazione WSMAN. In questo modo si impedisce alle sessioni remote di connettersi alle installazioni di PowerShell basate su Store. Sono supportate le configurazioni a livello di utente e la comunicazione remota SSH.
Altri installatori
Per ulteriori informazioni up-todata sui sistemi operativi supportati e sul ciclo di vita del supporto, vedi il Lifecycle di Supporto PowerShell.
Controlla le istruzioni di installazione del tuo sistema operativo preferito:
Inoltre, PowerShell 7.1 supporta versioni ARM32 e ARM64 di Debian, Ubuntu e ARM64 Alpine Linux.
Sebbene non sia ufficialmente supportato, la community ha fornito anche pacchetti per Arch e Kali Linux.
Annotazioni
Debian 10+, CentOS 8+, Ubuntu 20.04, Alpine e Arm attualmente non supportano il remoting di WinRM. Per dettagli sulla configurazione del remoting basato su SSH, vedi PowerShell Remoting over SSH.
Funzionalità sperimentali
Per altre informazioni sulle funzionalità sperimentali, vedere Using Experimental Features.
Le seguenti funzionalità sperimentali sono ora caratteristiche mainstream in questa versione:
Le seguenti funzionalità sperimentali sono state aggiunte in questa versione:
Microsoft.PowerShell.Utility.PSManageBreakpointsInRunspace
- PowerShell 7.1 estende questa funzionalità sperimentale per aggiungere il parametro Runspace a tutti
*-PSBreakpointi cmdlet. Il parametro Runspace specifica un oggetto Runspace che interagisce con i punti di interruzione nello spazio specificato.
- PowerShell 7.1 estende questa funzionalità sperimentale per aggiungere il parametro Runspace a tutti
PSNativePSPathResolution - Questa funzione ti permette di passare i percorsi provider PowerShell a comandi nativi che non supportano la sintassi dei percorsi PowerShell.
PSCultureInvariantReplaceOperator - Quando l'operando sinistro in un'istruzione
-replaceoperatore non è una stringa, quell'operando viene convertito in una stringa. Con la funzione attivata, la conversione non utilizza le impostazioni di Cultura per la conversione delle stringhe.PSSubsystemPluginModel getta le basi per supportare i futuri plug-in Predittivi di IntelliSense.
Cambiamenti e miglioramenti improvvisi
Il comportamento di confronto delle stringhe è cambiato in .NET 5.0
PowerShell 7.1 è costruito su .NET 5.0, che ha introdotto la seguente modifica interruttiva:
A partire da .NET 5.0, i confronti delle stringhe invarianti di cultura ignorano i caratteri di controllo non stampanti.
Ad esempio, le seguenti due stringhe sono considerate identiche:
# Escape sequence "`a" is Ctrl-G or [char]7 'Food' -eq "Foo`ad"TrueCorrezione
$?per non essere$falsequando il comando nativo scrive instderr(#13395)È comune che i comandi nativi scrivano su
stderrsenza voler indicare un guasto. Con questo cambiamento$?viene impostato solo$falsequando il comando nativo ha anche un codice di uscita diverso da zero. Questo cambiamento non è correlato alla caratteristicaPSNotApplyErrorActionToStderrsperimentale .Non influenzare
$ErrorActionPreferencestderrl'output dei comandi nativi (#13361)È comune che i comandi nativi scrivano su
stderrsenza voler indicare un guasto. Con questa modifica,stderrl'output viene ancora catturato negli oggetti ErrorRecord , ma l'esecuzione non si applica$ErrorActionPreferencepiù se l'ErrorRecord proviene da un comando nativo.Rinomina
-FromUnixTimein-UnixTimeSecondsONGet-Dateper permettere l'input in tempo Unix (#13084) (Grazie @aetos382!)Il
-FromUnixTimeparametro è stato aggiunto durante la versione 7.1-preview.2. Il parametro è stato rinominato per adattarsi meglio al tipo di dato. Questo parametro assume un valore intero che rappresenta in secondi dal 1° gennaio 1970, 0:00:00.Questo esempio converte un'ora Unix (rappresentata dal numero di secondi dal 01-01-1970 0:00:00) in DateTime.
Get-Date -UnixTimeSeconds 1577836800 Wednesday, January 01, 2020 12:00:00 AMConsentire di specificare esplicitamente il parametro denominato di sostituire lo stesso parametro dallo splatting hashtable (#13162)
Con questo cambiamento, i parametri nominati dello splatting vengono spostati alla fine della lista dei parametri in modo che vengano vincolati dopo che tutti i parametri nominati esplicitamente specificati sono stati legati. Il binding dei parametri per funzioni semplici non genera un errore quando non si trova un parametro specificato con nome. Parametri nominati sconosciuti sono legati al
$argsparametro della funzione semplice. Spostando lo splatting alla fine della lista degli argomenti, cambia l'ordine in cui i parametri appaiono in$args.Per esempio:
function SimpleTest { param( $Name, $Path ) "Name: $Name; Path: $Path; Args: $args" }Nel comportamento precedente, MyPath non è vincolato perché
-Pathè il terzo argomento nella lista degli argomenti. ## Quindi finisce per essere infilato in '$args' insieme aBlah = "World"PS> $hash = @{ Name = "Hello"; Blah = "World" } PS> SimpleTest @hash "MyPath" Name: Hello; Path: ; Args: -Blah: World MyPathCon questo cambiamento, gli argomenti da
@hashvengono spostati alla fine della lista degli argomenti. MyPath diventa il primo argomento della lista, quindi è vincolato a-Path.PS> SimpleTest @hash "MyPath" Name: Hello; Path: MyPath; Args: -Blah: WorldFai in modo che il parametro
-Qualifierdell'interruttore non sia posizionale perSplit-Path(#12960) (Grazie @yecril71pl!)Risolvi la directory di lavoro come percorso letterale per
Start-Processquando non è specificato (#11946) (Grazie @NoMoreFood!)Fai funzionare
-OutFilei parametri nei web cmdlet come-LiteralPath(#11701) (Grazie @iSazonov!)Correggere il binding dei parametri della stringa per
BigIntegeri letterali numerici (#11634) (Grazie @vexx32!)Su Windows,
Start-Processcrea un ambiente di processo con tutte le variabili dell'ambiente della sessione corrente, usando-UseNewEnvironmentcrea un nuovo ambiente di processo predefinito (#10830) (Grazie @iSazonov!)Non avvolgere il risultato return in
PSObjectquando si converte aScriptBlockin delegato (#10619)Quando a
ScriptBlockviene convertito in un tipo delegato da usare nel contesto C#, avvolgere il risultato in aPSObjectporta a problemi inutili:- Quando il valore viene convertito nel tipo di ritorno delegato, il
PSObjectviene essenzialmente srotolato. Quindi nonPSObjectè necessario. - Quando il tipo di ritorno delegato è
object, viene avvolto in unPSObject, rendendo difficile lavorarci in codice C#.
Dopo questo cambiamento, l'oggetto restituito diventa l'oggetto sottostante.
- Quando il valore viene convertito nel tipo di ritorno delegato, il