Delen via


about_Assignment_Operators

Korte beschrijving

Hierin wordt beschreven hoe u operators gebruikt om waarden toe te wijzen aan variabelen.

Lange beschrijving

Toewijzingsoperatoren wijzen een of meer waarden toe aan een variabele. Ze kunnen numerieke bewerkingen uitvoeren op de waarden vóór de toewijzing.

PowerShell ondersteunt de volgende toewijzingsoperators.

Operator Beschrijving
= Hiermee stelt u de waarde van een variabele in op de opgegeven waarde.
+= Verhoogt de waarde van een variabele met de opgegeven waarde, of
voegt de opgegeven waarde toe aan de bestaande waarde.
-= Verlaagt de waarde van een variabele met de opgegeven waarde.
*= vermenigvuldigt de waarde van een variabele met de opgegeven waarde, of
voegt de opgegeven waarde toe aan de bestaande waarde.
/= Deelt de waarde van een variabele door de opgegeven waarde.
%= Deelt de waarde van een variabele door de opgegeven waarde en
wijst vervolgens de rest (modulus) toe aan de variabele.
++ Verhoogt de waarde van een variabele, toewijsbare eigenschap, of
matrixelement door 1.
-- Verlaagt de waarde van een variabele, toewijsbare eigenschap of
matrixelement door 1.

Syntax

De syntaxis van de toewijzingsoperatoren is als volgt:

<assignable-expression> <assignment-operator> <value>

Toewijsbare expressies omvatten variabelen en eigenschappen. De waarde kan één waarde, een matrix met waarden of een opdracht, expressie of instructie zijn.

De operatoren voor verhoging en verlagen zijn unaire operatoren. Elk heeft voorvoegsel- en achtervoegselversies.

<assignable-expression><operator> <operator><assignable-expression>

De toewijsbare expressie moet een getal zijn of kan worden geconverteerd naar een getal.

Waarden toewijzen

Variabelen worden geheugenruimten genoemd die waarden opslaan. U slaat de waarden op in variabelen met behulp van de toewijzingsoperator =. De nieuwe waarde kan de bestaande waarde van de variabele vervangen of u kunt een nieuwe waarde toevoegen aan de bestaande waarde.

De basistoewijzingsoperator is het gelijkteken =(ASCII 61). Met de volgende instructie wordt bijvoorbeeld de waarde PowerShell toegewezen aan de $MyShell variabele:

$MyShell = "PowerShell"

Wanneer u een waarde toewijst aan een variabele in PowerShell, wordt de variabele gemaakt als deze nog niet bestond. De eerste van de volgende twee toewijzingsinstructies maakt bijvoorbeeld de $a variabele en wijst een waarde van 6 toe aan $a. De tweede toewijzingsinstructie wijst een waarde van 12 toe aan $a. Met de eerste instructie wordt een nieuwe variabele gemaakt. De tweede instructie wijzigt alleen de waarde:

$a = 6
$a = 12

Variabelen in PowerShell hebben geen specifiek gegevenstype, tenzij u ze cast. Wanneer een variabele slechts één object bevat, neemt de variabele het gegevenstype van dat object. Wanneer een variabele een verzameling objecten bevat, heeft de variabele het gegevenstype System.Object. Daarom kunt u elk type object toewijzen aan de verzameling. In het volgende voorbeeld ziet u dat u procesobjecten, serviceobjecten, tekenreeksen en gehele getallen aan een variabele kunt toevoegen zonder een fout te genereren:

$a = Get-Process
$a += Get-Service
$a += "string"
$a += 12

Omdat de toewijzingsoperator = een lagere prioriteit heeft dan de pijplijnoperator |, zijn haakjes niet vereist om het resultaat van een opdrachtpijplijn toe te wijzen aan een variabele. Met de volgende opdracht sorteert u bijvoorbeeld de services op de computer en wijst u vervolgens de gesorteerde services toe aan de $a variabele:

$a = Get-Service | Sort-Object -Property name

U kunt de waarde die door een instructie is gemaakt ook toewijzen aan een variabele, zoals in het volgende voorbeeld:

$a = if ($b -lt 0) { 0 } else { $b }

In dit voorbeeld wordt nul toegewezen aan de $a variabele als de waarde van $b kleiner is dan nul. De waarde van $b wordt toegewezen aan $a als de waarde van $b niet kleiner is dan nul.

De toewijzingsoperator

De toewijzingsoperator = wijst waarden toe aan variabelen. Als de variabele al een waarde heeft, vervangt de toewijzingsoperator = de waarde zonder waarschuwing.

Met de volgende instructie wordt de waarde voor het gehele getal 6 toegewezen aan de $a variabele:

$a = 6

Als u een tekenreekswaarde wilt toewijzen aan een variabele, plaatst u de tekenreekswaarde als volgt tussen aanhalingstekens:

$a = "baseball"

Als u een matrix (meerdere waarden) wilt toewijzen aan een variabele, scheidt u de waarden als volgt met komma's:

$a = "apple", "orange", "lemon", "grape"

Als u een hashtabel wilt toewijzen aan een variabele, gebruikt u de standaard-hashtabelnotatie in PowerShell. Typ een accolade @ , gevolgd door sleutel-waardeparen die worden gescheiden door puntkomma's ; en tussen accolades { }staan. Als u bijvoorbeeld een hash-tabel wilt toewijzen aan de $a variabele, typt u:

$a = @{one=1; two=2; three=3}

Als u hexadecimale waarden wilt toewijzen aan een variabele, gaat u vooraf aan de waarde door 0x. PowerShell converteert de hexadecimale waarde (0x10) naar een decimale waarde (in dit geval 16) en wijst die waarde toe aan de $a variabele. Als u bijvoorbeeld een waarde van 0x10 wilt toewijzen aan de $a variabele, typt u:

$a = 0x10

Als u een exponentiële waarde wilt toewijzen aan een variabele, typt u het hoofdnummer, de letter een een getal dat een veelvoud van 10 vertegenwoordigt. Als u bijvoorbeeld een waarde van 3,1415 wilt toewijzen aan de macht van 1.000 aan de $a variabele, typt u:

$a = 3.1415e3

PowerShell kan ook kilobytes KB, megabytes MBen gigabytes GB converteren naar bytes. Als u bijvoorbeeld een waarde van 10 kilobytes wilt toewijzen aan de $a variabele, typt u:

$a = 10kb

De toewijzing door opteloperator

Met de toewijzing door optellingsoperator += wordt de waarde van een variabele verhoogd of wordt de opgegeven waarde toegevoegd aan de bestaande waarde. De actie is afhankelijk van het feit of de variabele een numeriek of tekenreekstype heeft en of de variabele één waarde (een scalaire waarde) of meerdere waarden (een verzameling) bevat.

De += operator combineert twee bewerkingen. Eerst wordt het toegevoegd en vervolgens toegewezen. Daarom zijn de volgende instructies gelijkwaardig:

$a += 2
$a = ($a + 2)

Wanneer de variabele één numerieke waarde bevat, wordt de bestaande waarde door de += operator verhoogd met het bedrag aan de rechterkant van de operator. Vervolgens wijst de operator de resulterende waarde toe aan de variabele. In het volgende voorbeeld ziet u hoe u de += operator gebruikt om de waarde van een variabele te verhogen:

$a = 4
$a += 2
$a
6

Wanneer de waarde van de variabele een tekenreeks is, wordt de waarde aan de rechterkant van de operator als volgt aan de tekenreeks toegevoegd:

$a = "Windows"
$a += " PowerShell"
$a
Windows PowerShell

Wanneer de waarde van de variabele een matrix is, voegt de += operator de waarden aan de rechterkant van de operator toe aan de matrix. Tenzij de matrix expliciet wordt getypt door cast, kunt u elk type waarde als volgt aan de matrix toevoegen:

$a = 1,2,3
$a += 2
$a
1
2
3
2

en

$a += "String"
$a
1
2
3
2
String

Wanneer de waarde van een variabele een hashtabel is, voegt de += operator de waarde aan de rechterkant van de operator toe aan de hashtabel. Omdat het enige type dat u aan een hash-tabel kunt toevoegen echter een andere hashtabel is, mislukken alle andere toewijzingen.

Met de volgende opdracht wordt bijvoorbeeld een hashtabel toegewezen aan de $a variabele. Vervolgens wordt de += operator gebruikt om een andere hash-tabel toe te voegen aan de bestaande hashtabel, waardoor in feite een nieuw sleutel-waardepaar wordt toegevoegd aan de bestaande hashtabel. Deze opdracht slaagt, zoals wordt weergegeven in de uitvoer:

$a = @{a = 1; b = 2; c = 3}
$a += @{mode = "write"}
$a
Name                           Value
----                           -----
a                              1
b                              2
mode                           write
c                              3

Met de volgende opdracht wordt geprobeerd een geheel getal '1' toe te voegen aan de hashtabel in de $a variabele. Deze opdracht mislukt:

$a = @{a = 1; b = 2; c = 3}
$a += 1
You can add another hash table only to a hash table.
At line:1 char:6
+ $a += <<<<  1

De toewijzing per aftrekkingsoperator

Met de toewijzing per aftrekkingsoperator -= wordt de waarde van een variabele afgetrokken met de waarde die aan de rechterkant van de operator is opgegeven. Deze operator kan niet worden gebruikt met tekenreeksvariabelen en kan niet worden gebruikt om een element uit een verzameling te verwijderen.

De -= operator combineert twee bewerkingen. Eerst wordt het afgetrokken en vervolgens toegewezen. Daarom zijn de volgende instructies gelijkwaardig:

$a -= 2
$a = ($a - 2)

In het volgende voorbeeld ziet u hoe u de -= operator gebruikt om de waarde van een variabele te verlagen:

$a = 8
$a -= 2
$a
6

U kunt ook de toewijzingsoperator -= gebruiken om de waarde van een lid van een numerieke matrix te verlagen. Hiertoe geeft u de index op van het matrixelement dat u wilt wijzigen. In het volgende voorbeeld wordt de waarde van het derde element van een matrix (element 2) verlaagd met 1:

$a = 1,2,3
$a[2] -= 1
$a
1
2
2

U kunt de -= operator niet gebruiken om de waarden van een variabele te verwijderen. Als u alle waarden wilt verwijderen die zijn toegewezen aan een variabele, gebruikt u de cmdlets Clear-Item of Clear-Variable om een waarde van $null of "" toe te wijzen aan de variabele.

$a = $null

Als u een bepaalde waarde uit een matrix wilt verwijderen, gebruikt u matrixnotatie om een waarde van $null toe te wijzen aan het specifieke item. Met de volgende instructie wordt bijvoorbeeld de tweede waarde (indexpositie 1) uit een matrix verwijderd:

$a = 1,2,3
$a
1
2
3
$a[1] = $null
$a
1
3

Als u een variabele wilt verwijderen, gebruikt u de cmdlet Remove-Variable . Deze methode is handig wanneer de variabele expliciet wordt gecast naar een bepaald gegevenstype en u een niet-getypte variabele wilt. Met de volgende opdracht wordt de $a variabele verwijderd:

Remove-Variable -Name a

De toewijzing per vermenigvuldigingsoperator

De toewijzing door vermenigvuldigingsoperator *= vermenigvuldigt een numerieke waarde of voegt het opgegeven aantal kopieën van de tekenreekswaarde van een variabele toe.

Wanneer een variabele één numerieke waarde bevat, wordt die waarde vermenigvuldigd met de waarde aan de rechterkant van de operator. In het volgende voorbeeld ziet u bijvoorbeeld hoe u de *= operator gebruikt om de waarde van een variabele te vermenigvuldigen:

$a = 3
$a *= 4
$a
12

In dit geval combineert de *= operator twee bewerkingen. Eerst wordt het vermenigvuldigd en vervolgens toegewezen. Daarom zijn de volgende instructies gelijkwaardig:

$a *= 2
$a = ($a * 2)

Wanneer een variabele een tekenreekswaarde bevat, voegt PowerShell het opgegeven aantal tekenreeksen als volgt toe aan de waarde:

$a = "file"
$a *= 4
$a
filefilefilefile

Als u een element van een matrix wilt vermenigvuldigen, gebruikt u een index om het element te identificeren dat u wilt vermenigvuldigen. Met de volgende opdracht wordt bijvoorbeeld het eerste element in de matrix (indexpositie 0) vermenigvuldigd met 2:

$a[0] *= 2

De toewijzing per delingsoperator

De toewijzing per deeloperator /= deelt een numerieke waarde door de waarde die aan de rechterkant van de operator is opgegeven. De operator kan niet worden gebruikt met tekenreeksvariabelen.

De /= operator combineert twee bewerkingen. Eerst wordt het gedeeld en vervolgens toegewezen. Daarom zijn de volgende twee instructies gelijkwaardig:

$a /= 2
$a = ($a / 2)

De volgende opdracht gebruikt bijvoorbeeld de /= operator om de waarde van een variabele te delen:

$a = 8
$a /=2
$a
4

Als u een element van een matrix wilt delen, gebruikt u een index om het element te identificeren dat u wilt wijzigen. Met de volgende opdracht wordt bijvoorbeeld het tweede element in de matrix (indexpositie 1) gedeeld door 2:

$a[1] /= 2

De toewijzing door modulus-operator

De toewijzing door de operator %= modulus deelt de waarde van een variabele door de waarde aan de rechterkant van de operator. Vervolgens wijst de %= operator de rest (bekend als de modulus) toe aan de variabele. U kunt deze operator alleen gebruiken als een variabele één numerieke waarde bevat. U kunt deze operator niet gebruiken wanneer een variabele een tekenreeksvariabele of een matrix bevat.

De %= operator combineert twee bewerkingen. Eerst wordt de rest gedeeld en bepaald en vervolgens wordt de rest toegewezen aan de variabele. Daarom zijn de volgende instructies gelijkwaardig:

$a %= 2
$a = ($a % 2)

In het volgende voorbeeld ziet u hoe u de %= operator gebruikt om de modulus van een quotiënt op te slaan:

$a = 7
$a %= 4
$a
3

De operatoren voor verhoging en verlagen

De operator ++ increment verhoogt de waarde van een variabele met 1. Wanneer u de operator increment in een eenvoudige instructie gebruikt, wordt er geen waarde geretourneerd. Als u het resultaat wilt weergeven, geeft u de waarde van de variabele als volgt weer:

$a = 7
++$a
$a
8

Als u wilt afdwingen dat een waarde wordt geretourneerd, plaatst u de variabele en de operator als volgt tussen haakjes:

$a = 7
(++$a)
8

De increment-operator kan vóór (voorvoegsel) of na (na) een variabele worden geplaatst. Met de voorvoegselversie van de operator wordt een variabele als volgt verhoogd voordat de waarde ervan wordt gebruikt in de -instructie:

$a = 7
$c = ++$a
$a
8
$c
8

De navoegselversie van de operator zorgt ervoor dat een variabele wordt verhoogd nadat de waarde ervan in de instructie is gebruikt. In het volgende voorbeeld hebben de $c variabelen en $a verschillende waarden omdat de waarde wordt toegewezen aan $c vóór $a wijzigingen:

$a = 7
$c = $a++
$a
8
$c
7

De operator -- voor verlagen verlaagt de waarde van een variabele met 1. Net als bij de operator increment wordt er geen waarde geretourneerd wanneer u de operator in een eenvoudige instructie gebruikt. Gebruik haakjes om als volgt een waarde te retourneren:

$a = 7
--$a
$a
6
(--$a)
5

De voorvoegselversie van de operator maakt een variabele af voordat de waarde wordt gebruikt in de -instructie, als volgt:

$a = 7
$c = --$a
$a
6
$c
6

De postfix-versie van de operator maakt een variabele af nadat de waarde ervan is gebruikt in de -instructie. In het volgende voorbeeld hebben de $d variabelen en $a verschillende waarden omdat de waarde wordt toegewezen aan $d vóór $a wijzigingen:

$a = 7
$d = $a--
$a
6
$d
7

Microsoft .NET-typen

Wanneer een variabele slechts één waarde heeft, bepaalt de waarde die is toegewezen aan de variabele standaard het gegevenstype van de variabele. Met de volgende opdracht maakt u bijvoorbeeld een variabele met het type Integer (System.Int32):

$a = 6

Als u het .NET-type van een variabele wilt vinden, gebruikt u de methode GetType en de eigenschap FullName als volgt. Zorg ervoor dat u de haakjes achter de naam van de GetType-methode opneemt, ook al heeft de methode-aanroep geen argumenten:

$a = 6
$a.GetType().FullName
System.Int32

Als u een variabele wilt maken die een tekenreeks bevat, wijst u een tekenreekswaarde toe aan de variabele. Als u wilt aangeven dat de waarde een tekenreeks is, plaatst u deze als volgt tussen aanhalingstekens:

$a = "6"
$a.GetType().FullName
System.String

Als de eerste waarde die aan de variabele is toegewezen een tekenreeks is, behandelt PowerShell alle bewerkingen als tekenreeksbewerkingen en worden nieuwe waarden naar tekenreeksen gecast. Dit gebeurt in het volgende voorbeeld:

$a = "file"
$a += 3
$a
file3

Als de eerste waarde een geheel getal is, behandelt PowerShell alle bewerkingen als bewerkingen met gehele getallen en worden nieuwe waarden naar gehele getallen gecast. Dit gebeurt in het volgende voorbeeld:

$a = 6
$a += "3"
$a
9

U kunt een nieuwe scalaire variabele als elk .NET-type casten door de typenaam tussen vierkante haken te plaatsen die voorafgaan aan de naam van de variabele of de eerste toewijzingswaarde. Wanneer u een variabele cast, kunt u bepalen welke typen gegevens in de variabele kunnen worden opgeslagen. En u kunt bepalen hoe de variabele zich gedraagt wanneer u deze manipuleert.

Met de volgende opdracht wordt de variabele bijvoorbeeld gecast als een tekenreekstype:

[string]$a = 27
$a += 3
$a
273

In het volgende voorbeeld wordt de eerste waarde gecast in plaats van de variabele te casten:

$a = [string]27

Wanneer u een variabele naar een specifiek type cast, is de algemene conventie om de variabele te casten, niet de waarde. U kunt het gegevenstype van een bestaande variabele echter niet opnieuw instellen als de waarde ervan niet kan worden geconverteerd naar het nieuwe gegevenstype. Als u het gegevenstype wilt wijzigen, moet u de waarde als volgt vervangen:

$a = "string"
[int]$a
Cannot convert value "string" to type "System.Int32". Error: "Input string was
not in a correct format." At line:1 char:8 + [int]$a <<<<
[int]$a = 3

Wanneer u bovendien een gegevenstype voorafgaat aan een variabelenaam, wordt het type van die variabele vergrendeld, tenzij u het type expliciet overschrijft door een ander gegevenstype op te geven. Als u een waarde probeert toe te wijzen die niet compatibel is met het bestaande type en u het type niet expliciet overschrijft, wordt in PowerShell een fout weergegeven, zoals wordt weergegeven in het volgende voorbeeld:

$a = 3
$a = "string"
[int]$a = 3
$a = "string"
Cannot convert value "string" to type "System.Int32". Error: "Input
string was not in a correct format."
At line:1 char:3
+ $a <<<<  = "string"
[string]$a = "string"

In PowerShell worden de gegevenstypen van variabelen die meerdere items in een matrix bevatten, anders verwerkt dan de gegevenstypen van variabelen die één item bevatten. Tenzij een gegevenstype specifiek is toegewezen aan een matrixvariabele, is het gegevenstype altijd System.Object []. Dit gegevenstype is specifiek voor matrices.

Soms kunt u het standaardtype overschrijven door een ander type op te geven. Met de volgende opdracht wordt de variabele bijvoorbeeld gecast als een string [] matrixtype:

[string []] $a = "one", "two", "three"

PowerShell-variabelen kunnen elk .NET-gegevenstype zijn. Daarnaast kunt u elk volledig gekwalificeerde .NET-gegevenstype toewijzen dat beschikbaar is in het huidige proces. Met de volgende opdracht geeft u bijvoorbeeld een System.DateTime gegevenstype op:

[System.DateTime]$a = "5/31/2005"

Aan de variabele wordt een waarde toegewezen die voldoet aan het System.DateTime gegevenstype. De waarde van de $a variabele is als volgt:

Tuesday, May 31, 2005 12:00:00 AM

Meerdere variabelen toewijzen

In PowerShell kunt u waarden toewijzen aan meerdere variabelen met behulp van één opdracht. Het eerste element van de toewijzingswaarde wordt toegewezen aan de eerste variabele, het tweede element aan de tweede variabele, het derde element aan de derde variabele, enzovoort. Dit wordt meervoudige toewijzing genoemd.

Met de volgende opdracht wordt bijvoorbeeld de waarde 1 toegewezen aan de $a variabele, de waarde 2 aan de $b variabele en de waarde 3 aan de $c variabele:

$a, $b, $c = 1, 2, 3

Als de toewijzingswaarde meer elementen dan variabelen bevat, worden alle resterende waarden toegewezen aan de laatste variabele. De volgende opdracht bevat bijvoorbeeld drie variabelen en vijf waarden:

$a, $b, $c = 1, 2, 3, 4, 5

Daarom wijst PowerShell de waarde 1 toe aan de $a variabele en de waarde 2 aan de $b variabele. De waarden 3, 4 en 5 worden toegewezen aan de $c variabele. Als u de waarden in de $c variabele wilt toewijzen aan drie andere variabelen, gebruikt u de volgende indeling:

$d, $e, $f = $c

Met deze opdracht wordt de waarde 3 toegewezen aan de $d variabele, de waarde 4 aan de $e variabele en de waarde 5 aan de $f variabele.

Als de toewijzingswaarde minder elementen dan variabelen bevat, wordt aan de resterende variabelen de waarde $nulltoegewezen. De volgende opdracht bevat bijvoorbeeld drie variabelen en twee waarden:

$a, $b, $c = 1, 2

Daarom wijst PowerShell de waarde 1 toe aan de $a variabele en de waarde 2 aan de $b variabele. De $c variabele is $null.

U kunt ook één waarde toewijzen aan meerdere variabelen door de variabelen te koppelen. Met de volgende opdracht wordt bijvoorbeeld de waarde 'drie' toegewezen aan alle vier de variabelen:

$a = $b = $c = $d = "three"

Naast het gebruik van een toewijzingsbewerking om een variabelewaarde in te stellen, kunt u ook de cmdlet Set-Variable gebruiken. De volgende opdracht gebruikt Set-Variable bijvoorbeeld om een matrix van 1, 2, 3 toe te wijzen aan de $a variabele.

Set-Variable -Name a -Value 1, 2, 3

Zie ook