about_Operator_Precedence
Descrizione breve
Elenca gli operatori di PowerShell in ordine di precedenza.
Descrizione lunga
Gli operatori di PowerShell consentono di costruire espressioni semplici, ma potenti. In questo argomento vengono elencati gli operatori in ordine di precedenza. L'ordine di precedenza è l'ordine in cui PowerShell valuta gli operatori quando più operatori vengono visualizzati nella stessa espressione.
Quando gli operatori hanno la stessa precedenza, PowerShell li valuta da sinistra a destra mentre vengono visualizzati all'interno dell'espressione. Le eccezioni sono gli operatori di assegnazione, gli operatori cast e gli operatori di negazione (!
, -not
, -bnot
), che vengono valutati da destra a sinistra.
È possibile usare enclosure, ad esempio parentesi, per eseguire l'override dell'ordine di precedenza standard e forzare PowerShell a valutare la parte racchiusa di un'espressione prima di una parte non chiusa.
Nell'elenco seguente gli operatori vengono elencati nell'ordine in cui vengono valutati. Gli operatori nella stessa riga, o nello stesso gruppo, hanno la stessa precedenza.
La colonna Operatore elenca gli operatori. La colonna Riferimento elenca l'argomento della Guida di PowerShell in cui viene descritto l'operatore. Per visualizzare l'argomento, digitare get-help <topic-name>
.
OPERATOR | RIFERIMENTO |
---|---|
$() @() () @{} |
about_Operators |
. ?. (accesso ai membri) |
about_Operators |
:: (statico) |
about_Operators |
[0] ?[0] (operatore index) |
about_Operators |
[int] (operatori cast) |
about_Operators |
-split (unario) |
about_Split |
-join (unario) |
about_Join |
, (operatore virgola) |
about_Operators |
++ -- |
about_Assignment_Operators |
! -not |
about_Logical_Operators |
.. (operatore range) |
about_Operators |
-f (operatore format) |
about_Operators |
- (unario/negativo) |
about_Arithmetic_Operators |
* / % |
about_Arithmetic_Operators |
+ - |
about_Arithmetic_Operators |
Il gruppo di operatori seguente ha la stessa precedenza. Le varianti con distinzione tra maiuscole e minuscole e senza distinzione tra maiuscole e minuscole hanno la stessa precedenza.
OPERATOR | RIFERIMENTO |
---|---|
-split (binario) |
about_Split |
-join (binario) |
about_Join |
-is -isnot -as |
about_Type_Operators |
-eq -ne -gt -ge -lt -le |
about_Comparison_Operators |
-like -notlike |
about_Comparison_Operators |
-match -notmatch |
about_Comparison_Operators |
-in -notIn |
about_Comparison_Operators |
-contains -notContains |
about_Comparison_Operators |
-replace |
about_Comparison_Operators |
L'elenco riprende qui con gli operatori seguenti in ordine di precedenza:
OPERATOR | RIFERIMENTO |
---|---|
-band -bnot -bor -bxor -shr -shl |
about_Arithmetic_Operators |
-and -or -xor |
about_Logical_Operators |
Gli elementi seguenti non sono operatori true. Fanno parte della sintassi dei comandi di PowerShell, non della sintassi delle espressioni. L'assegnazione è sempre l'ultima azione che si verifica.
SYNTAX | RIFERIMENTO |
---|---|
. (dot-source) |
about_Operators |
& (chiamata) |
about_Operators |
? <if-true> : <if-false> (Operatore Ternario) |
about_Operators |
?? (operatore null-coalese) |
about_Operators |
| (operatore pipeline) |
about_Operators |
> >> 2> 2>> 2>&1 |
about_Redirection |
&& || (operatori della catena di pipeline) |
about_Operators |
= += -= *= /= %= ??= |
about_Assignment_Operators |
Esempi
I due comandi seguenti mostrano gli operatori aritmetici e l'effetto dell'uso delle parentesi per forzare PowerShell a valutare prima la parte racchiusa dell'espressione.
PS> 2 + 3 * 4
14
PS> (2 + 3) * 4
20
Nell'esempio seguente vengono recuperati i file di testo di sola lettura dalla directory locale e li salva nella $read_only
variabile .
$read_only = Get-ChildItem *.txt | Where-Object {$_.isReadOnly}
Equivale all'esempio seguente.
$read_only = ( Get-ChildItem *.txt | Where-Object {$_.isReadOnly} )
Poiché l'operatore pipeline (|
) ha una precedenza maggiore rispetto all'operatore di assegnazione (=
), i file che il Get-ChildItem
cmdlet ottiene vengono inviati al Where-Object
cmdlet per filtrare prima che vengano assegnati alla $read_only
variabile.
Nell'esempio seguente viene illustrato che l'operatore index ha la precedenza sull'operatore cast.
Questa espressione crea una matrice di tre stringhe. Usa quindi l'operatore index con un valore pari a 0 per selezionare il primo oggetto nella matrice, ovvero la prima stringa. Infine, esegue il cast dell'oggetto selezionato come stringa. In questo caso, il cast non ha alcun effetto.
PS> [string]@('Windows','PowerShell','2.0')[0]
Windows
Questa espressione usa le parentesi per forzare l'esecuzione dell'operazione di cast prima della selezione dell'indice. Di conseguenza, viene eseguito il cast dell'intera matrice come stringa (singola). Quindi, l'operatore index seleziona il primo elemento nella matrice di stringhe, ovvero il primo carattere.
PS> ([string]@('Windows','PowerShell','2.0'))[0]
W
Nell'esempio seguente, poiché l'operatore -gt
(maggiore di) ha una precedenza maggiore rispetto all'operatore -and
(AND logico), il risultato dell'espressione è FAL edizione Standard.
PS> 2 -gt 4 -and 1
False
Equivale all'espressione seguente.
PS> (2 -gt 4) -and 1
False
Se l'operatore -and ha una precedenza maggiore, la risposta sarà TRUE.
PS> 2 -gt (4 -and 1)
True
Tuttavia, questo esempio dimostra un principio importante di gestione della precedenza dell'operatore. Quando un'espressione è difficile da interpretare, usare le parentesi per forzare l'ordine di valutazione, anche quando forza la precedenza dell'operatore predefinito. Le parentesi rendono chiare le proprie intenzioni alle persone che leggono e gestiscono gli script.
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per