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 $nulllesz 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"

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