Dela via


Om tilldelningsoperatorer

Kort beskrivning

Beskriver hur du använder operatorer för att tilldela värden till variabler.

Lång beskrivning

Tilldelningsoperatorer tilldelar en eller flera värden till en variabel. De kan utföra numeriska åtgärder på värdena före tilldelningen.

PowerShell stöder följande tilldelningsoperatorer.

Operator Beskrivning
= Anger värdet för en variabel till det angivna värdet.
+= Ökar värdet för en variabel med det angivna värdet, eller
lägger till det angivna värdet i det befintliga värdet.
-= Minskar värdet för en variabel med det angivna värdet.
*= Multiplicerar värdet för en variabel med det angivna värdet, eller
lägger till det angivna värdet i det befintliga värdet.
/= Dividerar värdet för en variabel med det angivna värdet.
%= Dividerar värdet för en variabel med det angivna värdet och
tilldelar sedan resten (modulus) till variabeln.
++ Ökar värdet för en variabel, tilldelningsbar egenskap eller
matriselement efter 1.
-- Minskar värdet för en variabel, tilldelningsbar egenskap eller
matriselement efter 1.

Syntax

Syntaxen för tilldelningsoperatorerna är följande:

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

Tilldelningsbara uttryck inkluderar variabler och egenskaper. Värdet kan vara ett enskilt värde, en matris med värden eller ett kommando, uttryck eller en instruktion.

Operatorerna för inkrement och minskning är oföränderliga operatorer. Var och en har prefix- och postfixversioner.

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

Det tilldelningsbara uttrycket måste vara ett tal eller så måste det konverteras till ett tal.

Tilldela värden

Variabler kallas minnesutrymmen som lagrar värden. Du lagrar värdena i variabler med hjälp av tilldelningsoperatorn =. Det nya värdet kan ersätta det befintliga värdet för variabeln, eller så kan du lägga till ett nytt värde i det befintliga värdet.

Den grundläggande tilldelningsoperatorn är likhetstecknet =(ASCII 61). Följande instruktion tilldelar till exempel värdet PowerShell till variabeln $MyShell :

$MyShell = "PowerShell"

När du tilldelar ett värde till en variabel i PowerShell skapas variabeln om den inte redan finns. Den första av följande två tilldelningsuttryck skapar till exempel variabeln $a och tilldelar värdet 6 till $a. Den andra tilldelningssatsen tilldelar värdet 12 till $a. Den första instruktionen skapar en ny variabel. Den andra instruktionen ändrar endast dess värde:

$a = 6
$a = 12

Variabler i PowerShell har ingen specifik datatyp om du inte genererar dem. När en variabel bara innehåller ett objekt tar variabeln datatypen för objektet. När en variabel innehåller en samling objekt har variabeln datatypen System.Object. Därför kan du tilldela alla typer av objekt till samlingen. I följande exempel visas att du kan lägga till processobjekt, tjänstobjekt, strängar och heltal i en variabel utan att generera ett fel:

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

Eftersom tilldelningsoperatorn = har lägre prioritet än pipelineoperatorn |krävs inte parenteser för att tilldela resultatet av en kommandopipeline till en variabel. Följande kommando sorterar till exempel tjänsterna på datorn och tilldelar sedan de sorterade tjänsterna till variabeln $a :

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

Du kan också tilldela värdet som skapats av en -instruktion till en variabel, som i följande exempel:

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

Det här exemplet tilldelar noll till variabeln $a om värdet $b för är mindre än noll. Det tilldelar värdet $b för till $a om värdet $b för inte är mindre än noll.

Tilldelningsoperatorn

Tilldelningsoperatorn = tilldelar värden till variabler. Om variabeln redan har ett värde ersätter tilldelningsoperatorn = värdet utan varning.

Följande instruktion tilldelar heltalsvärdet 6 till variabeln $a :

$a = 6

Om du vill tilldela ett strängvärde till en variabel omger du strängvärdet inom citattecken enligt följande:

$a = "baseball"

Om du vill tilldela en matris (flera värden) till en variabel separerar du värdena med kommatecken enligt följande:

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

Om du vill tilldela en hash-tabell till en variabel använder du standard-hashtabellnotationen i PowerShell. Skriv ett vid-tecken @ följt av nyckel/värde-par som avgränsas med semikolon ; och omges av klammerparenteser { }. Om du till exempel vill tilldela en hash-tabell till variabeln $a skriver du:

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

Om du vill tilldela hexadecimala värden till en variabel, föregår du värdet med 0x. PowerShell konverterar hexadecimalt värde (0x10) till ett decimalvärde (i det här fallet 16) och tilldelar det värdet till variabeln $a . Om du till exempel vill tilldela variabeln $a ett värde av 0x10 skriver du:

$a = 0x10

Om du vill tilldela ett exponentiellt värde till en variabel skriver du rotnumret, bokstaven eoch ett tal som representerar en multipel av 10. Om du till exempel vill tilldela värdet 3,1415 till 1 000 till variabeln $a skriver du:

$a = 3.1415e3

PowerShell kan också konvertera kilobyte KB, megabyte MBoch gigabyte GB till byte. Om du till exempel vill tilldela variabeln $a värdet 10 kilobyte skriver du:

$a = 10kb

Tilldelningen efter additionsoperator

Tilldelningen efter additionsoperator += ökar antingen värdet för en variabel eller lägger till det angivna värdet i det befintliga värdet. Åtgärden beror på om variabeln har en numerisk eller strängtyp och om variabeln innehåller ett enda värde (en skalär) eller flera värden (en samling).

Operatorn += kombinerar två åtgärder. Först lägger den till och sedan tilldelar den. Därför är följande påståenden likvärdiga:

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

När variabeln innehåller ett enda numeriskt värde ökar operatorn += det befintliga värdet med beloppet till höger om operatorn. Sedan tilldelar operatorn det resulterande värdet till variabeln. I följande exempel visas hur du använder operatorn += för att öka värdet för en variabel:

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

När värdet för variabeln är en sträng läggs värdet på höger sida av operatorn till i strängen enligt följande:

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

När värdet för variabeln är en matris lägger operatorn += till värdena till höger om operatorn i matrisen. Såvida inte matrisen uttryckligen skrivs genom gjutning kan du lägga till valfri typ av värde i matrisen på följande sätt:

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

och

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

När värdet för en variabel är en hash-tabell lägger operatorn += till värdet till höger om operatorn i hash-tabellen. Men eftersom den enda typen som du kan lägga till i en hash-tabell är en annan hash-tabell misslyckas alla andra tilldelningar.

Följande kommando tilldelar till exempel en hash-tabell till variabeln $a . Sedan använder den operatorn += för att lägga till en annan hash-tabell i den befintliga hash-tabellen, vilket effektivt lägger till ett nytt nyckel/värde-par i den befintliga hash-tabellen. Det här kommandot lyckas, vilket visas i utdata:

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

Följande kommando försöker lägga till ett heltal "1" i hash-tabellen i variabeln $a . Det här kommandot misslyckas:

$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

Tilldelningen efter subtraktionsoperator

Tilldelningen efter subtraktionsoperator -= minskar värdet för en variabel med det värde som anges till höger om operatorn. Den här operatorn kan inte användas med strängvariabler och kan inte användas för att ta bort ett element från en samling.

Operatorn -= kombinerar två åtgärder. Först subtraherar den och tilldelar sedan. Därför är följande påståenden likvärdiga:

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

I följande exempel visas hur du använder operatorn -= för att minska värdet för en variabel:

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

Du kan också använda tilldelningsoperatorn -= för att minska värdet för en medlem i en numerisk matris. Det gör du genom att ange indexet för det matriselement som du vill ändra. I följande exempel minskas värdet för det tredje elementet i en matris (element 2) med 1:

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

Du kan inte använda operatorn -= för att ta bort värdena för en variabel. Om du vill ta bort alla värden som har tilldelats till en variabel använder du cmdletarna Clear-Item eller Clear-Variable för att tilldela ett värde för $null eller "" till variabeln.

$a = $null

Om du vill ta bort ett visst värde från en matris använder du matrisnotation för att tilldela ett värde $null till det specifika objektet. Följande instruktion tar till exempel bort det andra värdet (indexposition 1) från en matris:

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

Om du vill ta bort en variabel använder du cmdleten Remove-Variable . Den här metoden är användbar när variabeln uttryckligen omvandlas till en viss datatyp och du vill ha en otypad variabel. Följande kommando tar bort variabeln $a :

Remove-Variable -Name a

Tilldelningen efter multiplikationsoperator

Tilldelningen per multiplikationsoperator *= multiplicerar ett numeriskt värde eller lägger till det angivna antalet kopior av strängvärdet för en variabel.

När en variabel innehåller ett enda numeriskt värde multipliceras det värdet med värdet till höger om operatorn. I följande exempel visas till exempel hur du använder operatorn *= för att multiplicera värdet för en variabel:

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

I det här fallet kombinerar operatorn *= två åtgärder. Först multipliceras den och tilldelas sedan. Därför är följande påståenden likvärdiga:

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

När en variabel innehåller ett strängvärde lägger PowerShell till det angivna antalet strängar till värdet enligt följande:

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

Om du vill multiplicera ett element i en matris använder du ett index för att identifiera det element som du vill multiplicera. Följande kommando multiplicerar till exempel det första elementet i matrisen (indexposition 0) med 2:

$a[0] *= 2

Tilldelningen per divisionsoperator

Tilldelningen efter divisionsoperator /= delar ett numeriskt värde med det värde som anges till höger om operatorn. Operatorn kan inte användas med strängvariabler.

Operatorn /= kombinerar två åtgärder. Först delar den upp och sedan tilldelar den. Därför är följande två uttryck likvärdiga:

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

Följande kommando använder till exempel operatorn /= för att dela upp värdet för en variabel:

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

Om du vill dela upp ett element i en matris använder du ett index för att identifiera det element som du vill ändra. Följande kommando delar till exempel det andra elementet i matrisen (indexposition 1) med 2:

$a[1] /= 2

Tilldelningen efter modulusoperator

Tilldelningen efter modulusoperator %= delar värdet för en variabel med värdet till höger om operatorn. Sedan tilldelar operatorn %= resten (kallas modulus) till variabeln. Du kan bara använda den här operatorn när en variabel innehåller ett enda numeriskt värde. Du kan inte använda den här operatorn när en variabel innehåller en strängvariabel eller en matris.

Operatorn %= kombinerar två åtgärder. Först delar den upp och bestämmer resten och tilldelar sedan resten till variabeln. Därför är följande påståenden likvärdiga:

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

I följande exempel visas hur du använder operatorn %= för att spara modulus för en kvot:

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

Operatorerna för ökning och minskning

Inkrementsoperatorn ++ ökar värdet för en variabel med 1. När du använder inkrementsoperatorn i en enkel instruktion returneras inget värde. Visa resultatet genom att visa värdet för variabeln enligt följande:

$a = 7
++$a
$a
8

Om du vill framtvinga att ett värde returneras omger du variabeln och operatorn inom parentes enligt följande:

$a = 7
(++$a)
8

Inkrementsoperatorn kan placeras före (prefix) eller efter (postfix) en variabel. Prefixversionen av operatorn ökar en variabel innan dess värde används i -instruktionen enligt följande:

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

Postfixversionen av operatorn ökar en variabel efter att dess värde har använts i -instruktionen. I följande exempel har variablerna $c och $a olika värden eftersom värdet tilldelas till $c före $a ändringar:

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

Minskningsoperatorn -- minskar värdet för en variabel med 1. Precis som med inkrementsoperatorn returneras inget värde när du använder operatorn i en enkel instruktion. Använd parenteser för att returnera ett värde enligt följande:

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

Prefixversionen av operatorn minskar en variabel innan dess värde används i -instruktionen enligt följande:

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

Postfixversionen av operatorn minskar en variabel efter att dess värde har använts i -instruktionen. I följande exempel har variablerna $d och $a olika värden eftersom värdet tilldelas till $d före $a ändringar:

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

Microsoft .NET Framework typer

När en variabel bara har ett värde avgör som standard det värde som tilldelas variabeln datatypen för variabeln. Följande kommando skapar till exempel en variabel som har typen "Heltal" (System.Int32):

$a = 6

Om du vill hitta den .NET Framework typen av variabel använder du gettype-metoden och egenskapen FullName enligt följande. Se till att inkludera parenteserna efter GetType-metodnamnet , även om metodanropet inte har några argument:

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

Om du vill skapa en variabel som innehåller en sträng tilldelar du ett strängvärde till variabeln. Ange att värdet är en sträng genom att omsluta det inom citattecken enligt följande:

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

Om det första värdet som tilldelas variabeln är en sträng behandlar PowerShell alla åtgärder som strängåtgärder och omvandlar nya värden till strängar. Detta inträffar i följande exempel:

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

Om det första värdet är ett heltal behandlar PowerShell alla åtgärder som heltalsåtgärder och omvandlar nya värden till heltal. Detta inträffar i följande exempel:

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

Du kan omvandla en ny skalär variabel som vilken .NET Framework typ som helst genom att placera typnamnet inom hakparenteser som föregår antingen variabelnamnet eller det första tilldelningsvärdet. När du gjuter en variabel kan du bestämma vilka typer av data som kan lagras i variabeln. Och du kan avgöra hur variabeln beter sig när du manipulerar den.

Följande kommando omvandlar till exempel variabeln som en strängtyp:

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

I följande exempel omvandlas det första värdet i stället för att variabeln omvandlas:

$a = [string]27

När du omvandlar en variabel till en viss typ är den gemensamma konventionen att omvandla variabeln, inte värdet. Du kan dock inte omarbeta datatypen för en befintlig variabel om dess värde inte kan konverteras till den nya datatypen. Om du vill ändra datatypen måste du ersätta dess värde på följande sätt:

$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

När du föregår ett variabelnamn med en datatyp låses dessutom typen av variabel såvida du inte uttryckligen åsidosätter typen genom att ange en annan datatyp. Om du försöker tilldela ett värde som är inkompatibelt med den befintliga typen och du inte uttryckligen åsidosätter typen, visar PowerShell ett fel som visas i följande exempel:

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

I PowerShell hanteras datatyperna för variabler som innehåller flera objekt i en matris på ett annat sätt än de datatyper av variabler som innehåller ett enda objekt. Om inte en datatyp är specifikt tilldelad till en matrisvariabel är datatypen alltid System.Object []. Den här datatypen är specifik för matriser.

Ibland kan du åsidosätta standardtypen genom att ange en annan typ. Följande kommando omvandlar till exempel variabeln som en string [] matristyp:

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

PowerShell-variabler kan vara valfri .NET Framework datatyp. Dessutom kan du tilldela alla fullständigt kvalificerade .NET Framework datatyp som är tillgänglig i den aktuella processen. Följande kommando anger till exempel en System.DateTime datatyp:

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

Variabeln tilldelas ett värde som överensstämmer System.DateTime med datatypen. Värdet för variabeln $a skulle vara följande:

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

Tilldela flera variabler

I PowerShell kan du tilldela värden till flera variabler med hjälp av ett enda kommando. Det första elementet i tilldelningsvärdet tilldelas till den första variabeln, det andra elementet tilldelas till den andra variabeln, det tredje elementet till den tredje variabeln och så vidare. Följande kommando tilldelar till exempel värdet 1 till variabeln $a , värdet 2 till variabeln $b och värdet 3 till variabeln $c :

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

Om tilldelningsvärdet innehåller fler element än variabler tilldelas alla återstående värden till den sista variabeln. Följande kommando innehåller till exempel tre variabler och fem värden:

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

Därför tilldelar PowerShell värdet 1 till variabeln $a och värdet 2 till variabeln $b . Den tilldelar värdena 3, 4 och 5 till variabeln $c . Om du vill tilldela värdena i variabeln $c till tre andra variabler använder du följande format:

$d, $e, $f = $c

Det här kommandot tilldelar värdet 3 till variabeln $d , värdet 4 till variabeln $e och värdet 5 till variabeln $f .

Om tilldelningsvärdet innehåller mindre element än variabler tilldelas inte alla återstående variabler i slutet några värden. Följande kommando innehåller till exempel tre variabler och två värden:

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

Därför tilldelar PowerShell värdet 1 till variabeln $a och värdet 2 till variabeln $b . Det tilldelar inte något värde till variabeln $c .

Du kan också tilldela ett enda värde till flera variabler genom att länka variablerna. Följande kommando tilldelar till exempel värdet "tre" till alla fyra variablerna:

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

Förutom att använda en tilldelningsåtgärd för att ange ett variabelvärde kan du också använda cmdleten Set-Variable . Följande kommando använder Set-Variable till exempel för att tilldela variabeln $a en matris med 1, 2 och 3.

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

Se även

about_Arrays

about_Hash_Tables

about_Variables

Clear-Variable

Remove-Variable

Set-Variable