Operatorer

I PowerShell finns det ett stort antal operat0rer som hjälper oss att hantera, jämföra och bearbeta matematiska och logiska operationer samt uttryck i PowerShell.

Aritmetiska operatorer

Med hjälp av de aritmetiska operatorerna kan vi addera, subtrahera, multiplicera, dividera och även beräkna modulus av en division (rest i en division).

+ Adderar två värden
Subtraherar ett värde från ett annat värde. Minustecknet representerar negativt värde.
* Multiplicerar två värden
/ Dividerar två värden
% Returnerar det överblivna värdet från en division

Observera att aritmetiska operatorer kan också placera tillsammans strängvärde och numerisk värde.

För att addera två numeriska värden exekvera:
PS C:\>1 + 3
4
För att addera numeriska värden lagrade i variabler exekvera:
PS C:\>$Ett = 1
PS C:\>$Tre = 3
PS C:\>$Ett + $Tre
4
För att få ihop ett strängvärde med ett numeriska värde exekvera:
PS C:\>”Fyra” + 3
Fyra3
För att subtrahera numeriska värden lagrade i två olika variabler exekvera:
PS C:\>$Ett = 1
PS C:\>$Tre – $Ett
2
För att presentera negativa tal med hjälp av operatorer exekvera:
PS C:\>-2 + 1 eller PS C:\> 1 – 2
-1
För att få en multiplikation kan vi exekvera:
PS C:\>5 * 5
25
För att en sträng ska repeteras ett antal ggr kan vi exekvera:
PS C:\>”Hej ” * 10
Hej Hej Hej Hej Hej Hej Hej Hej Hej Hej
För att dividera två tal exekvera:
PS C:\>10 / 5
2
För att utföra en division som genererar en rest kan vi exekvera:
PS C:\>11 % 3
2

Tilldelningsoperatorer

= tilldelar värde
+=  lägger till ett värde i det befintliga värdet
-=  minskar variabelns värde med givet värde
*=  multiplicerar variabelns värde med givet värde
/=  dividerar
%=  returnerar det överblivna värdet från en division
++ ökar värdet med 1
– – minskar värdet med 1

Tilldelningsoperatorer används för att tilldela ett eller flera värden till en variabel, förändra värden i en variabel eller för att lägga på ett värde till en variabel.

För att tilldela ett värdet till en variabel exekvera:
PS C:\>$uno = 1
PS C:\>$uno
1
För att tilldela samma värde till flera variabler exekvera:
PS C:\>$uno = $ett = 1
PS C:\>$uno
1
PS C:\>$ett
1
För att öka en variabels värde med 1 exekvera:
PS C:\>$uno += 1
PS C:\>$uno
2
För att få addera ett tal till samma variabel exekvera:
PS C:\>$uno += 1
PS C:\>$uno
3
Tilldelningsoperatorer kan även användas för att sammanfoga strängvärden:
PS C:\>$a = ”En”
PS C:\>$a += ” ”
PS C:\>$a += ”fantastisk dag”
PS C:\$a
En fantastisk dag
För att sammanfoga en variabels värde med någon CmdLet exekvera:
PS C:\>$a += ”:
PS C:\>$a += Get-Date
PS C:\>$a
En fantastisk dag: 9/1/2013 12:15:22
För att minska en variabels numerisk innehåll med ett specifikt tal och tilldela variabeln det nya värdet exekvera:
PS C:\>$a = 10
PS C:\>$a -= 2
PS C:\>$a
8
För att multiplicera ett värde (till exempel en sträng) och samtidigt tilldela variabeln det nya värdet exekvera:
PS C:\>$a = ”- ”
PS C:\>$a *= 10
PS C:\>$a
– – – – – – – – – –
Variabeln tilldelas ett strängvärde (minustecknet) och mellanplats efter det: “- “. Därefter multipliceras 10 gånger.
För att multiplicera ett numerisk värde exekvera:
PS C:\>$a = 6
PS C:\>$a * 10
PS C:\>$a
60
För att öka en variabels värde med 1 kan vi använda operatoren ++. Operatorn används oftast i loopar. Exemplet nedan visar hur operatorn ++ kan användas:
PS C:\>$a = 1
PS C:\>$a ++
PS C:\>$a
2
PS C:\>$a ++
PS C:\>$a
3
För att istället subtrahera ett från variabeln exekvera:
PS C:\>$a = 1
PS C:\>$a —
PS C:\>$a
0
PS C:\>$a —
PS C:\>$a
1

Jämförelseoperatorer

-eq lika med, returnerar $True om värden är lika
-gt större än, returnerar $True så länge det vänstra värdet är större.
-ge större än eller lika med, returnerar $True så länge det vänstra värdet är större än eller lika med det högra värdet
-lt mindre än, returnerar $True så länge det vänstra värdet är mindre än det högra värdet
-le  mindre än eller lika med, returnerar $True så länge det vänstra värdet är mindre än eller lika med det högra värdet
-like  evaluerar det vänstra värdet mot det högra värdet och returnerar $True om matchningen stämmer. Denna operatorn stödjer wildcard matchningar såsom ?,* och intervaller [a-e]
-contains  returnerar $True om en lista eller array innehåller det högra värdet.

Jämförelseoperatorer används för att jämföra värden. Dessa operatorer är inte ”case sensitive” i standardläge.

För att jämföra om ett värde är lika med ett annat exekvera:
PS C:\>1 -eq 1
True
För att jämföra strängvärden exekvera:
PS C:\>”Hej” -eq ”hej”
True
OBS: jämförelsen inte tar hänsyn till stora eller små bokstäver.
Operatorn –eq stödjer inte wildcards och inte heller reguljära uttryck dessutom kan wildcards eller * tolkas som en vanlig textsträng.
Försöker vi matcha med ett wildcard returneras $false eftersom PowerShell gör en exakt matchning. Men om vada strängar innehåller wildcard är de exakt lika och då blir det True.
PS C:\>”Hej” -eq ”*ej”
False
PS C:\>”*ej” -eq ”*ej”
True
För att se om ett värde är större än ett annat värde använda operatorn –gt.
PS C:\>1 -gt 2
False
PS C:\>2 -gt 1
True
Om vi istället vill testa om ett värde är mindre än ett annat värde använda oss av operatorn –lt.
PS C:\>1 -lt 2
True
PS C:\>1 -lt 1
False
För att jämföra om ett värde är mindre än eller lika med ett annat värde genom att använda operatorn –le.
PS C:\>1 -le 2
True
PS C:\>1 -le 1
True
PS C:\>1 -le 0
False
Operatorn like tillåter matchningar med wildcards, vilket innebär att vi kan göra godtyckliga matchningar.
PS C:\>”Hej” -like ”hej”
True
PS C:\>”Hej” -like ”*ej”
True
PS C:\>”Hej” -eq ”*ej”
False
För att använda andra wildcards exempelvis frågetecken, en eller flera bokstäver inom ett intervall eller bland de som specificerar i hakparenteser exekvera:
PS C:\>”Hej” -like ”h?j”
True
PS C:\>”Hej” -like ”h[d-f]j”
True
PS C:\>”Hej” -like ”h[a,e,f]j”
True
PS C:\>”Hej” -like ”h[a,f]j”
False
För att jämföra en sträng med en annan som innehåller wildcards exekvera:
PS C:\>”Windows PowerShell” -like ”*Indo*s P*ELL”
True
För att få matchningen case-sensitive använd operatorn –clike. I standardläge är jämförelseoperatorer case-insensitive men genom att ange ett c framför operatorns namn talar vi om att jämförelsen skall vara case-sensitive.
PS C:\>”Windows PowerShell” –clike ”*Indo*s P*HELL”
False
För att jämföra en enstaka tecken exekvera:
PS C:\>”Windows PowerShell” -like ”W?ndo?s ?owerS?ell”
True
När en variabel innehåller flera värde kallas ”array”. Värdena i en array kan hanteras tillsammans eller separat från varandra. Om vi vill jämföra en array med ett värde och testa om arrayen innehåller värdet kan vi använda operatorn –contains.
PS C:\>$Array = 1,2,3,4,5,6,7
PS C:\>$Array -contains 2
True
PS C:\>$Array -contains 8
False

Logiska operatorer

 -and returnerar Sant om både det vänstra värdet och det högra värdet evalueras Sant.
-or returnerar Sant om antingen det vänstra värdet eller det högra värdet evalueras Sant.
-xor returnerar Sant om det vänstra värdet evalueras Sant men inte det högra värdet.
-not returnerar Sant om det högra värdet evalueras Falskt.

Logiska operatorer används för att jämföra booleska värden, sant eller falskt. Nedan listas ut några:

För att jämföra flera olika uttryck där samtliga uttryck evalueras till sant exekvera:
PS C:\>(1 -eq 1) -and (2 -eq 2)
True
PS C:\>(1 -eq 1) -and (2 -eq 6)
False
Operatorn -or jämför två olika värden men till skillnad från operatorn –and returnerar $true om ett eller den andra eller båda värde är lika.
PS C:\>(1 -eq 1) -or (2 -eq 2)
True
PS C:\>(1 -eq 1) -or (2 -eq 3)
True
PS C:\>(1 -eq 2) -or (2 -eq 3)
False
Operatorn –not testar det högra uttrycket och om uttrycket inte stämmer returneras $True.
PS C:\>-not (1 -eq 1)
False
PS C:\>-not (1 -eq 2)
True