Jämförelseoperatorer i PowerShell används för att jämföra värden och returnera resultatet av jämförelsen som ett booleskt värde ($true eller $false). Dessa operatorer gör det möjligt att skapa logik när man behandlar skript och när man behöver utföra olika åtgärder baserat på villkor. De används ofta i samband med villkorsuttryck och loopar för att skapa mer dynamiska och responsiva skript.
Här är några vanliga jämförelseoperatorer och hur de används:
- -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.
Exempel:
- Används för att kontrollera om två värden är lika
- PS C:\>$result = (5 -eq 5)
- PS C:\>$result
- Utdata: True
- Används för att kontrollera om två värden inte är lika.
- PS C:\>$result = (5 -ne 3)
- PS C:\>$result
- Utdata: True
- Används för att jämföra om ett värde är större än (-gt) eller mindre än (-lt) ett annat värde.
- PS C:\>$greater = (8 -gt 5)
- PS C:\>$greater
- Utdata: True
- Används för att jämföra om ett värde är större än eller lika med (-ge) eller mindre än eller lika med (-le) ett annat värde.
- PS C:\>$greaterOrEqual = (8 -ge 5)
- Används för att kontrollera om ett värde finns i en lista (array).
- PS C:\>$list = 1, 2, 3, 4, 5
- PS C:\>$result = ($list -contains 3)
- Först skapas en array som innehåller fem värde: 1, 2, 3, 4, 5
- Utdata: True
- Används för att jämföra strängar
- PS C:\>$text = ”Hello World”
- PS C:\>$result = ($text -like ”Hello*”)
- Utdata: True
Observera att det går bra att jämföra objekt direkt på prompten:
- Är 1 mindre än 2?
- PS C:\>1 -lt 2
- Utdata: False
- Är 1 mindre eller lika med 2?
- PS C:\>1 -le 2
- Utdata: False
- Operatorn like tillåter matchningar med wildcards:
- PS C:\>”Hej” -like ”hej”
- Utdata: True
- PS C:\>”Hej” -like ”*ej”
- Utdata: True
- Men inte sant med operatorn -eq
- PS C:\>”Hej” -like ”*ej”
- Utdata: False
Nedan anges några exempel av jämförelseoperatorer som använder andra wildcards än * exempelvis frågetecken som ersätter en eller flera bokstäver eller använda hakparenteser med ett intervall av bokstäver att jämföra:
- 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
case-sensitive eller case-insensitive
Observera att exemplen ovan är case-insensitive. För att göra matchningen case-sensitive använder du operatorn -clike. I standardläge är jämförelseoperatorer case-insensitive, men genom att inkludera ett ”c” framför operatorns namn indikerar du att jämförelsen ska vara case-sensitive.
Exempel:
- Matchning av exakt ord:
- PS C:\>$text = ”PowerShell is powerful”
- PS C:\>$result = $text -clike ”*Shell*”
- PS C:\>Write-Output $result
- Utdata: True
- Matchning med hjälp av wildcards:
- PS C:\>$fruit = ”apple”
- PS C:\>$result = $fruit -clike ”*P*”
- PS C:\>Write-Output $result
- Utdata: False
- Matchning av del av ord
- PS C:\>$sentence = ”The quick brown fox”
- PS C:\>$result = $sentence -clike ”*Quick*”
- PS C:\>Write-Output $result
- Utdata: False
Genom att använda operator -clike kan du göra jämförelsen mer exakt och kräva att teckenföljden och storleken på bokstäverna matchar exakt.