about_Assignment_Operators
Rövid leírás
Azt ismerteti, hogyan rendelhet értékeket változókhoz operátorokkal.
Hosszú leírás
A hozzárendelési operátorok egy vagy több értéket rendelnek egy változóhoz. Az egyenlőségjel (=
) a PowerShell-hozzárendelés operátora. A PowerShell a következő összetett hozzárendelési operátorokat is tartalmazza: +=
, , -=
, *=
%=
, ++
, . --
??=
Az összetett hozzárendelési operátorok műveleteket hajtanak végre a hozzárendelés előtti értékeken.
Syntax
A hozzárendelési operátorok szintaxisa a következő:
<assignable-expression>
<assignment-operator>
<value>
A hozzárendelhető kifejezések változókat és tulajdonságokat tartalmaznak. Az érték lehet egyetlen érték, értéktömb, parancs, kifejezés vagy utasítás.
A növekmény- és decrement operátorok nem automatikus operátorok. Mindegyik előtag- és utótagverzióval rendelkezik.
<assignable-expression><operator>
<operator><assignable-expression>
A hozzárendelhető kifejezés értékének számnak kell lennie, vagy számmá kell konvertálni.
A hozzárendelési operátor használata
A változók névvel ellátott memóriaterek, amelyek értékeket tárolnak. Az értékeket változókban tárolja a hozzárendelési operátorral =
. Az új érték lecserélheti a változó meglévő értékét, vagy hozzáfűzhet egy új értéket a meglévő értékhez. Az alábbi utasítás például a PowerShell értékét rendeli hozzá a $MyShell
változóhoz:
$MyShell = "PowerShell"
Amikor értéket rendel egy változóhoz a PowerShellben, a változó akkor jön létre, ha még nem létezik. Az alábbi két hozzárendelési utasítás közül az első például létrehozza a $a
változót, és 6 értéket rendel hozzá $a
. A második hozzárendelési utasítás 12 értéket rendel hozzá $a
. Az első utasítás létrehoz egy új változót. A második utasítás csak az értékét módosítja:
$a = 6
$a = 12
A PowerShell változói csak akkor rendelkeznek konkrét adattípussal, ha ön leadja őket. Ha egy változó csak egy objektumot tartalmaz, a változó az objektum adattípusát veszi figyelembe. Ha egy változó objektumgyűjteményt tartalmaz, a változó a System.Object adattípussal rendelkezik. Ezért bármilyen típusú objektumot hozzárendelhet a gyűjteményhez. Az alábbi példa azt mutatja be, hogy folyamatobjektumokat, szolgáltatásobjektumokat, sztringeket és egész számokat adhat hozzá egy változóhoz hiba nélkül:
$a = Get-Process
$a += Get-Service
$a += "string"
$a += 12
Mivel a hozzárendelési operátor =
elsőbbsége alacsonyabb, mint a folyamatüzemeltető |
, zárójelek nem szükségesek a parancsfolyamat eredményének változóhoz való hozzárendeléséhez. A következő parancs például rendezi a szolgáltatásokat a számítógépen, majd hozzárendeli a rendezett szolgáltatásokat a $a
változóhoz:
$a = Get-Service | Sort-Object -Property name
Az utasítás által létrehozott értéket is hozzárendelheti egy változóhoz, ahogyan az alábbi példában is látható:
$a = if ($b -lt 0) { 0 } else { $b }
Ez a példa nullát rendel a $a
változóhoz, ha az értéke $b
kisebb, mint nulla. Hozzárendeli $b
annak értékét, $a
ha az értéke $b
nem kisebb nullánál.
Ha tömböt (több értéket) szeretne hozzárendelni egy változóhoz, az értékeket vesszővel kell elválasztani az alábbiak szerint:
$a = "apple", "orange", "lemon", "grape"
Ha kivonattáblát szeretne hozzárendelni egy változóhoz, használja a standard kivonattábla-jelölést a PowerShellben. Írjon be egy előjelet@
, majd a pontosvesszővel elválasztott és kapcsos { }
zárójelek közé zárt kulcs/érték párokat;
. Ha például egy kivonatolót szeretne hozzárendelni a változóhoz, írja be a $a
következőt:
$a = @{one=1; two=2; three=3}
Ha hexadecimális értékeket szeretne hozzárendelni egy változóhoz, akkor a következővel előzze meg az értéket 0x
: .
A PowerShell decimális értékké alakítja a hexadecimális értéket (0x10) (ebben az esetben 16), és hozzárendeli ezt az értéket a $a
változóhoz. Ha például 0x10 értéket szeretne hozzárendelni a változóhoz, írja be a $a
következőt:
$a = 0x10
Ha exponenciális értéket szeretne hozzárendelni egy változóhoz, írja be a gyökérszámot, a betűt e
és a 10-es többszöröst képviselő számot. Ha például 3,1415 értéket szeretne hozzárendelni az 1000-es hatványhoz a változóhoz, írja be a $a
következőt:
$a = 3.1415e3
A PowerShell a kilobájtokat KB
, a megabájtokat MB
és a gigabájtokat GB
bájtokká is konvertálhatja. Ha például 10 kilobájtos értéket szeretne hozzárendelni a változóhoz, írja be a $a
következőt:
$a = 10kb
Összetett hozzárendelési operátorok használata
Az összetett hozzárendelési operátorok numerikus műveleteket hajtanak végre a hozzárendelés előtti értékeken.
Fontos
Az összetett hozzárendelési operátorok nem használnak dinamikus hatókörkezelést. A változó mindig az aktuális hatókörben található.
Az alábbi példában a változó $x
a globális hatókörben van definiálva. A zárójelek új hatókört hoznak létre. A kapcsos zárójelben lévő változó $x
egy új példány, nem pedig a globális változó másolata.
$x = 1 # Global scope
& { $x += 1; $x }
1
Amikor a normál hozzárendelés-operátort használja, a szülőhatókörből megkapja a változó másolatát. Figyelje meg azonban, hogy $x
a szülő hatóköre nem változik.
$x = 1 # Global scope
& { $x = $x + 1; $x }
"Global `$x = $x"
2
Global $x = 1
A hozzárendelés összeadási operátor szerint
Az összeadási operátorok +=
hozzárendelése vagy növeli egy változó értékét, vagy hozzáfűzi a megadott értéket a meglévő értékhez. A művelet attól függ, hogy a változó numerikus vagy sztring típusú-e, és hogy a változó egyetlen értéket (skaláris) vagy több értéket (gyűjteményt) tartalmaz-e.
Az +=
operátor két műveletet egyesít. Először hozzáadja, majd hozzárendeli.
Ezért a következő állítások egyenértékűek:
$a += 2
$a = ($a + 2)
Ha a változó egyetlen numerikus értéket tartalmaz, az operátor az +=
operátor jobb oldalán lévő összeggel növeli a meglévő értéket. Ezután az operátor hozzárendeli az eredményként kapott értéket a változóhoz. Az alábbi példa bemutatja, hogyan növelheti egy változó értékét az +=
operátorral:
$a = 4
$a += 2
$a
6
Ha a változó értéke sztring, az operátor jobb oldalán lévő érték hozzá lesz fűzve a sztringhez az alábbiak szerint:
$a = "Windows"
$a += " PowerShell"
$a
Windows PowerShell
Ha a változó értéke tömb, az +=
operátor hozzáfűzi az operátor jobb oldalán lévő értékeket a tömbhöz. Hacsak a tömb explicit módon nincs begépelve, tetszőleges típusú értéket hozzáfűzhet a tömbhöz az alábbiak szerint:
$a = 1,2,3
$a += 2
$a
1
2
3
2
és
$a += "String"
$a
1
2
3
2
String
Ha egy változó értéke kivonattábla, az +=
operátor hozzáfűzi az operátor jobb oldalán lévő értéket a kivonattáblához. Mivel azonban a kivonattáblához csak egy másik kivonattáblát adhat hozzá, az összes többi hozzárendelés meghiúsul.
Az alábbi parancs például egy kivonattáblát rendel a $a
változóhoz.
Ezután az +=
operátorral hozzáfűz egy másik kivonattáblát a meglévő kivonattáblához, hatékonyan hozzáadva egy új kulcs-érték párot a meglévő kivonatoló táblához.
Ez a parancs sikeres, ahogy az a kimenetben is látható:
$a = @{a = 1; b = 2; c = 3}
$a += @{mode = "write"}
$a
Name Value
---- -----
a 1
b 2
mode write
c 3
Az alábbi parancs egy "1" egész számot kísérel meg hozzáfűzni a változó kivonattáblához $a
. Ez a parancs sikertelen:
$a = @{a = 1; b = 2; c = 3}
$a += 1
InvalidOperation:
Line |
2 | $a += 1
| ~~~~~~~
| A hash table can only be added to another hash table.
A hozzárendelés kivonási operátor szerint
A kivonási operátorok -=
hozzárendelése a változó értékét az operátor jobb oldalán megadott értékkel csökkenti. Ez az operátor nem használható sztringváltozókkal, és nem használható elem gyűjteményből való eltávolítására.
Az -=
operátor két műveletet egyesít. Először kivonja, majd hozzárendeli. Ezért a következő állítások egyenértékűek:
$a -= 2
$a = ($a - 2)
Az alábbi példa bemutatja, hogyan használható az operátor egy -=
változó értékének csökkentésére:
$a = 8
$a -= 2
$a
6
A hozzárendelési operátor használatával -=
is csökkentheti egy numerikus tömb egy tagjának értékét. Ehhez adja meg a módosítani kívánt tömbelem indexét. Az alábbi példában egy tömb harmadik elemének (2. elem) értéke 1-sel csökken:
$a = 1,2,3
$a[2] -= 1
$a
1
2
2
Az operátorral nem -=
törölheti egy változó értékeit. A változóhoz rendelt összes érték törléséhez használja a Clear-Item vagy Clear-Variableparancsmagokat a változó értékének vagy értékének ""
$null
hozzárendeléséhez.
$a = $null
Ha egy adott értéket szeretne törölni egy tömbből, a tömb jelölésével $null
rendeljen hozzá egy értéket az adott elemhez. Az alábbi utasítás például törli a második értéket (1. indexpozíció) egy tömbből:
$a = 1,2,3
$a
1
2
3
$a[1] = $null
$a
1
3
Változó törléséhez használja a Remove-Variable parancsmagot. Ez a módszer akkor hasznos, ha a változót explicit módon egy adott adattípusra öntötték, és egy nem beírt változót szeretne. A következő parancs törli a változót $a
:
Remove-Variable -Name a
A hozzárendelés szorzási operátor szerint
A szorzási operátorok *=
hozzárendelése megszorozza a numerikus értékeket, vagy hozzáfűzi egy változó sztringértékének megadott számú példányát.
Ha egy változó egyetlen numerikus értéket tartalmaz, a függvény megszorozza az értéket az operátor jobb oldalán lévő értékkel. Az alábbi példa például bemutatja, hogyan használható az operátor egy *=
változó értékének szorzására:
$a = 3
$a *= 4
$a
12
Ebben az esetben az *=
operátor két műveletet egyesít. Először megszorozza, majd hozzárendeli. Ezért a következő állítások egyenértékűek:
$a *= 2
$a = ($a * 2)
Ha egy változó sztringértéket tartalmaz, a PowerShell a megadott számú sztringet hozzáfűzi az értékhez az alábbiak szerint:
$a = "file"
$a *= 4
$a
filefilefilefile
Egy tömb egy elemének szorzásához használjon indexet a szorozni kívánt elem azonosításához. Az alábbi parancs például megszorozza a tömb első elemét (0. indexpozíció) 2-vel:
$a[0] *= 2
A hozzárendelés osztási operátor szerint
A hozzárendelés osztási operátor /=
szerint elosztja a numerikus értéket az operátor jobb oldalán megadott értékkel. Az operátor nem használható sztringváltozókkal.
Az /=
operátor két műveletet egyesít. Először elosztja, majd hozzárendeli. Ezért a következő két állítás egyenértékű:
$a /= 2
$a = ($a / 2)
Az alábbi parancs például az /=
operátorral osztja el egy változó értékét:
$a = 8
$a /=2
$a
4
Egy tömb egy elemének felosztásához használjon indexet a módosítani kívánt elem azonosításához. Az alábbi parancs például a tömb második elemét (1. indexpozíció) 2-vel osztja el:
$a[1] /= 2
A modulus operátor hozzárendelése
A modulus %=
operátor szerinti hozzárendelés egy változó értékét az operátor jobb oldalán lévő értékkel osztja el. Ezután az %=
operátor a fennmaradó részt (más néven moduluszt) a változóhoz rendeli. Ezt az operátort csak akkor használhatja, ha egy változó egyetlen numerikus értéket tartalmaz. Ezt az operátort nem használhatja, ha egy változó sztringváltozót vagy tömböt tartalmaz.
Az %=
operátor két műveletet egyesít. Először elosztja és meghatározza a fennmaradó részt, majd a maradékot a változóhoz rendeli. Ezért a következő állítások egyenértékűek:
$a %= 2
$a = ($a % 2)
Az alábbi példa bemutatja, hogyan mentheti az %=
operátort egy hányados modulusának mentéséhez:
$a = 7
$a %= 4
$a
3
A növekmény- és decrement operátorok
A növekményes operátor ++
egy változó értékét 1-zel növeli. Ha egyszerű utasításban használja a növekmény operátort, a függvény nem ad vissza értéket. Az eredmény megtekintéséhez jelenítse meg a változó értékét az alábbiak szerint:
$a = 7
++$a
$a
8
Ha egy értéket vissza szeretne adni, zárójelbe kell tenni a változót és az operátort, az alábbiak szerint:
$a = 7
(++$a)
8
A növekmény operátora elhelyezhető egy változó elé (előtag) vagy utána (postfix). Az operátor előtagverziója egy változót növekményes, mielőtt az értékét felhasználja az utasításban, az alábbiak szerint:
$a = 7
$c = ++$a
$a
8
$c
8
Az operátor utótagverziója egy változót növekményesen növeli, miután az érték szerepel az utasításban. Az alábbi példában a változók és a $c
változók eltérő értékekkel rendelkeznek, mert az érték a módosítások előtt $a
van hozzárendelve$c
:$a
$a = 7
$c = $a++
$a
8
$c
7
A decrement operátor --
egy változó értékét 1-rel csökkenti. A növekményes operátorhoz hasonlóan a függvény nem ad vissza értéket, ha egyszerű utasításban használja az operátort. Zárójelek használatával adjon vissza egy értéket az alábbiak szerint:
$a = 7
--$a
$a
6
(--$a)
5
Az operátor előtagverziója egy változót dekreál, mielőtt az értékét felhasználja az utasításban, az alábbiak szerint:
$a = 7
$c = --$a
$a
6
$c
6
Az operátor utótagverziója egy változót dekreál az értékének az utasításban való használata után. Az alábbi példában a változók és a $d
változók eltérő értékekkel rendelkeznek, mert az érték a módosítások előtt $a
van hozzárendelve$d
:$a
$a = 7
$d = $a--
$a
6
$d
7
Null-szenesítési hozzárendelés operátora
A null-szenesítés-hozzárendelési operátor ??=
csak akkor rendeli hozzá a jobb oldali operandus értékét a bal oldali operandushoz, ha a bal oldali operandus null értékű. Az ??=
operátor nem értékeli ki a jobb oldali operandusát, ha a bal oldali operandus értéke nem null.
$x = $null
$x ??= 100
$x
100
További információ: Null-szénerősítési operátor.
Microsoft .NET-típusok
Alapértelmezés szerint, ha egy változó csak egy értékkel rendelkezik, a változóhoz rendelt érték határozza meg a változó adattípusát. A következő parancs például létrehoz egy System.Int32 típusú változót:
$a = 6
Egy változó .NET-típusának megkereséséhez használja a GetType metódust és annak FullName tulajdonságát. Ügyeljen arra, hogy a GetType metódus neve után adja meg a zárójeleket, annak ellenére, hogy a metódushívásnak nincsenek argumentumai:
$a = 6
$a.GetType().FullName
System.Int32
Sztringet tartalmazó változó létrehozásához rendeljen hozzá egy sztringértéket a változóhoz. Ha azt szeretné jelezni, hogy az érték egy sztring, tegye idézőjelek közé az alábbiak szerint:
$a = "6"
$a.GetType().FullName
System.String
Ha a változóhoz rendelt első érték egy sztring, a PowerShell minden műveletet sztringműveletként kezel, és új értékeket ad a sztringeknek. Ez a következő példában fordul elő:
$a = "file"
$a += 3
$a
file3
Ha az első érték egész szám, a PowerShell az összes műveletet egész számként kezeli, és új értékeket ad át egész számokra. Ez a következő példában fordul elő:
$a = 6
$a += "3"
$a
9
Az új skaláris változókat bármely .NET-típusként megjelenítheti úgy, hogy a típusnevet szögletes zárójelbe helyezi, amely a változó nevét vagy az első hozzárendelési értéket megelőzi. Változó leadásakor a változóban tárolható adatok típusát határozza meg.
A következő parancs például sztringtípusként öntötte a változót:
[string]$a = 27
$a += 3
$a
273
Az alábbi példa az első értéket veti ki a változó helyett:
$a = [string]27
Meglévő változó adattípusát nem lehet átdolgozni, ha az értéke nem konvertálható az új adattípusra.
$a = "string"
[int]$a
InvalidArgument: Cannot convert value "string" to type "System.Int32". Error:
"The input string 'string' was not in a correct format."
Az adattípus módosításához cserélje le az értékét az alábbiak szerint:
[int]$a = 3
Ezenkívül, ha egy változó nevét adattípussal előzi meg, a változó típusa zárolva lesz, kivéve, ha explicit módon felülbírálja a típust egy másik adattípus megadásával. Ha olyan értéket próbál hozzárendelni, amely nem kompatibilis a meglévő típussal, és nem bírálja felül explicit módon a típust, a PowerShell hibaüzenetet jelenít meg, ahogyan az alábbi példában látható:
$a = 3
$a = "string"
[int]$a = 3
$a = "string"
MetadataError:
Line |
2 | $a = "string"
| ~~~~~~~~~~~~~
| Cannot convert value "string" to type "System.Int32". Error: "The input
string 'string' was not in a correct format."
[string]$a = "string"
A PowerShellben a tömbben több elemet tartalmazó változók adattípusait a rendszer az egyetlen elemet tartalmazó változók adattípusától eltérően kezeli. Hacsak nincs kifejezetten tömbváltozóhoz hozzárendelve adattípus, az adattípus mindig System.Object []
az . Ez az adattípus tömbökre jellemző.
Előfordulhat, hogy felülbírálhatja az alapértelmezett típust egy másik típus megadásával. A következő parancs például tömbtípusként öntötte a változót string []
:
[string []] $a = "one", "two", "three"
A PowerShell-változók bármilyen .NET-adattípust tartalmazhatnak. Emellett az aktuális folyamatban elérhető teljes körűen minősített .NET-adattípusokat is hozzárendelheti. A következő parancs például egy adattípust System.DateTime
határoz meg:
[System.DateTime]$a = "5/31/2005"
A változóhoz egy olyan érték lesz hozzárendelve, amely megfelel az System.DateTime
adattípusnak. A változó értéke a $a
következő:
Tuesday, May 31, 2005 12:00:00 AM
Több változó hozzárendelése
A PowerShellben egyetlen paranccsal több változóhoz is hozzárendelhet értékeket. A hozzárendelési érték első eleme az első változóhoz van rendelve, a második elem a második változóhoz, a harmadik elem a harmadik változóhoz. Ezt több hozzárendelésnek nevezzük.
Az alábbi parancs például az 1 értéket a $a
változóhoz, a 2 értéket a $b
változóhoz, a 3 értéket pedig a változóhoz rendeli $c
:
$a, $b, $c = 1, 2, 3
Ha a hozzárendelési érték több elemet tartalmaz, mint a változók, a rendszer az összes fennmaradó értéket az utolsó változóhoz rendeli hozzá. A következő parancs például három változót és öt értéket tartalmaz:
$a, $b, $c = 1, 2, 3, 4, 5
Ezért a PowerShell hozzárendeli az 1 értéket a $a
változóhoz, a 2 értéket pedig a $b
változóhoz. A változóhoz rendeli a 3, a 4 és az $c
5 értéket.
Ha a $c
változó értékeit három másik változóhoz szeretné hozzárendelni, használja a következő formátumot:
$d, $e, $f = $c
Ez a parancs a 3 értéket a $d
változóhoz, a 4 értéket a $e
változóhoz, az 5 értéket pedig a változóhoz rendeli $f
.
Ha a hozzárendelési érték kevesebb elemet tartalmaz, mint a változók, a fennmaradó változókhoz az érték $null
lesz hozzárendelve. A következő parancs például három változót és két értéket tartalmaz:
$a, $b, $c = 1, 2
Ezért a PowerShell hozzárendeli az 1 értéket a $a
változóhoz, a 2 értéket pedig a $b
változóhoz. A $c
változó az $null
.
A változók láncolásával egyetlen értéket is hozzárendelhet több változóhoz. A következő parancs például "három" értéket rendel mind a négy változóhoz:
$a = $b = $c = $d = "three"
Változóval kapcsolatos parancsmagok
A változó értékének beállításához a hozzárendelési műveleten kívül használhatja a Set-Variable parancsmagot is. Az alábbi parancs például egy 1, 2, 3 tömb hozzárendelését használja Set-Variable
a $a
változóhoz.
Set-Variable -Name a -Value 1, 2, 3
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: