Megosztás a következőn keresztül:


about_Operátorok_Sorrendje

Rövid leírás

A PowerShell-operátorok sorrendben való felsorolása.

Hosszú leírás

A PowerShell-operátorokkal egyszerű, de hatékony kifejezéseket hozhat létre. Ez a témakör az operátorokat elsőbbségi sorrendben sorolja fel. Az elsőbbségi sorrend az a sorrend, amelyben a PowerShell kiértékeli az operátorokat, ha több operátor is megjelenik ugyanabban a kifejezésben.

Ha az operátorok azonos elsőbbséggel rendelkeznek, a PowerShell balról jobbra értékeli ki őket, ahogy megjelennek a kifejezésben. Kivételt képeznek a hozzárendelési operátorok, a típuskonverziós operátorok és a negációs operátorok (!, -not, -bnot), amelyek kiértékelése jobbról balra történik.

A zárójelek használatával felülírhatja a precedencia sorrendjét, és kényszerítheti a PowerShellt, hogy először a zárójelbe tett részét értékelje ki egy kifejezésnek, mielőtt a zárójelen kívüli résszel folytatná.

Az alábbi listában az operátorok a kiértékelés sorrendjében jelennek meg. Az ugyanazon a sorban vagy ugyanabban a csoportban lévő operátorok elsőbbséget élveznek.

Az Operátor oszlop felsorolja az operátorokat. A Referencia oszlop felsorolja azt a PowerShell-súgótémakört, amelyben az operátor leírása szerepel. A témakör interaktív megjelenítéséhez használja a következőt Get-Help -Name <topic-name>: .

OPERÁTOR HIVATKOZÁS
$() @() () @{} a_Operátorokról
. ?. (taghozzáférés) a_Operátorokról
:: (statikus) a_Operátorokról
[0] ?[0] (index operátor) a_Operátorokról
[int] (típuskonverziós operátorok) a_Operátorokról
-split (egyváltozós) about_Split
-join (egyváltozós) about_Join
, (vessző operátor) a_Operátorokról
++ -- about_Assignment_Operators
! -not az_Logicai_Operátorok
.. (tartomány operátora) a_Operátorokról
-f (formátum operátor) a_Operátorokról
- (unáris/negatív) about_Arithmetic_Operators
* / % about_Arithmetic_Operators
+ - about_Arithmetic_Operators

Az operátorok alábbi csoportja egyenlő elsőbbséget élvez. Azokra az esetekre, amikor a kis- és nagybetűk megkülönböztetése számít, valamint amikor nem, azonos precedencia vonatkozik.

OPERÁTOR HIVATKOZÁS
-split (bináris) about_Split
-join (bináris) about_Join
-is -isnot -as típus_Operátorokról
-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

A lista itt folytatódik a következő operátorokkal, sorrendben:

OPERÁTOR HIVATKOZÁS
-band -bnot -bor -bxor -shr -shl about_Arithmetic_Operators
-and -or -xor az_Logicai_Operátorok

A következő elemek nem valódi operátorok. Ezek a PowerShell parancsszintaxisának részei, nem pedig a kifejezés szintaxisának. A hozzárendelés mindig az utolsó művelet, amely történik.

SZINTAXIS HIVATKOZÁS
. (pont-forrás) a_Operátorokról
& (hívás) a_Operátorokról
? <if-true> : <if-false> (ternáris operátor) a_Operátorokról
?? (null-szénerősítési operátor) a_Operátorokról
| (csővezeték operátor) a_Operátorokról
> >> 2> 2>> 2>&1 about_Redirection
&& || (folyamatláncoperátorok) a_Operátorokról
= += -= *= /= %= ??= about_Assignment_Operators

Példák

Az alábbi két példa bemutatja az aritmetikai operátorokat, valamint azt, hogy milyen hatással van arra, hogy zárójelek használatával kényszerítse a PowerShellt a kifejezés zárt részének kiértékelésére.

PS> 2 + 3 * 4
14

PS> (2 + 3) * 4
20

Az alábbi példa lekéri a csak olvasható szövegfájlokat a helyi könyvtárból, és menti őket a $readOnly változóba.

$readOnly = Get-ChildItem -Path *.txt | Where-Object { $_.IsReadOnly }

Ez egyenértékű az alábbi példával.

$readOnly = (Get-ChildItem -Path *.txt | Where-Object { $_.IsReadOnly })

Mivel a folyamatkezelő (|) nagyobb elsőbbséget élvez, mint a hozzárendelési operátor (=), a rendszer a Get-ChildItem parancsmag által lekért fájlokat a Where-Object parancsmagba küldi szűrés céljából, mielőtt hozzá lettek rendelve a $readOnly változóhoz.

Az alábbi példa azt mutatja be, hogy az index operátor elsőbbséget élvez az öntött operátorral szemben.

Ez a kifejezés három karakterláncból álló tömböt hoz létre. Ezután az index operátort használja egy értékkel a tömb első objektumának 0 kiválasztásához, amely az első sztring. Végül sztringgé alakítja a kijelölt objektumot. Ebben az esetben a szereposztásnak nincs hatása.

PS> [string]@('Windows','PowerShell','2.0')[0]
Windows

Ez a kifejezés zárójelekkel kényszeríti a leadási műveletet az index kiválasztása előtt. Ennek eredményeképpen a teljes tömb (egyetlen) sztringként lesz átalakítva. Ezután az index operátor kiválasztja a sztringtömb első elemét, amely az első karakter.

PS> ([string]@('Windows','PowerShell','2.0'))[0]
W

A következő példában, mivel a -gt (nagyobb mint) operátor nagyobb előzményű, mint a -and (logikai ÉS) operátor, a kifejezés eredménye HAMIS.

PS> 2 -gt 4 -and 1
False

Ez egyenértékű a következő kifejezéssel.

PS> (2 -gt 4) -and 1
False

Ha az -and operátor nagyobb elsőbbséget élvez, az eredmény IGAZ lesz.

PS> 2 -gt (4 -and 1)
True

Ez a példa azonban az operátorok elsőbbsége kezelésének fontos elvét mutatja be. Ha egy kifejezés nehezen értelmezhető, zárójelek használatával kényszerítse ki a kiértékelési sorrendet, még akkor is, ha az alapértelmezett operátori elsőbbséget kényszeríti ki. A zárójelek egyértelművé teszik a szándékait azok számára, akik olvassák és karbantartják a szkripteket.

Az alábbi példa a logikai operátorok és -or a logikai operátorok közötti elsőbbséget -and mutatja be.

PS> $true -or $false -and $false
False

Más nyelvekben, például a C#-ban a logikai ÉS általában nagyobb elsőbbséget élvez, mint a logikai VAGY, ezért a fenti kifejezés eredménye IGAZ lesz.

A PowerShellben azonban az operátorok és -or az -and operátorok azonos elsőbbséget élveznek. A kiértékelés balról jobbra történik, ahogy a kifejezésben megjelennek. Az IGAZ és $true -and $false a HAMIS értékhez hasonlóan $true -or $false a kifejezés eredménye HAMIS.

Fontos

A PowerShell más környezetei, például a WMI-lekérdezési nyelv (WQL) és az Active Directory-szűrő saját operátori elsőbbséget élveznek, amely eltérhet a PowerShell logikai operátorok elsőbbségétől.

Lásd még