Jämförelseoperatorer

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:

  1. Används för att kontrollera om två värden är lika
    • PS C:\>$result = (5 -eq 5)
    • PS C:\>$result
    • Utdata: True
  2. Används för att kontrollera om två värden inte är lika.
    • PS C:\>$result = (5 -ne 3)
    • PS C:\>$result
    • Utdata: True
  3. 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
  4. 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)
  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
  6. 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:

  1. Är 1 mindre än 2?
    1. PS C:\>1 -lt 2
    2. Utdata: False
  2. Är 1 mindre eller lika med 2?
    • PS C:\>1 -le 2
    • Utdata: False
  3. Operatorn like tillåter matchningar med wildcards:
    • PS C:\>”Hej” -like ”hej”
    • Utdata: True
    • PS C:\>”Hej” -like ”*ej”
    • Utdata: True
  4. 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:

  1. PS C:\>”Hej” -like ”h?j”
    • True
  2. PS C:\>”Hej” -like ”h[d-f]j”
    • True
  3. PS C:\>”Hej” -like ”h[a,e,f]j”
    • True
  4. 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:

  1. Matchning av exakt ord:
    • PS C:\>$text = ”PowerShell is powerful”
    • PS C:\>$result = $text -clike ”*Shell*”
    • PS C:\>Write-Output $result
    • Utdata: True
  2. Matchning med hjälp av wildcards:
    • PS C:\>$fruit = ”apple”
    • PS C:\>$result = $fruit -clike ”*P*”
    • PS C:\>Write-Output $result
    • Utdata: False
  3. 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.