Variabler och Datatyper

I PowerShell är en variabel en namngiven lagringsplats för att hålla data eller information som du kan använda i dina kommandon eller skript. Variabler används för att lagra och hantera värden som kan vara text, siffror, objekt eller andra typer av data. Att använda variabler gör det möjligt att spara och manipulera data på ett flexibelt sätt.

Datatyper i PowerShell

Datatypen förmedlar till datorn hur många bitar som ska användas och på vilket sätt data ska hanteras för att undvika fel. Varje datatyp tar upp en specifik mängd minnesceller, och för att effektivt använda dessa minnesplatser är det viktigt att välja rätt datatyp. Här är några av de mest kända datatyperna:

Heltal

Datatyp Bitstorlek Min-värde Max-värde
byte 8 128 127
short 16 32 768 32 767
int 32 2 147 483 648 2 147 483 647
long 64 9 * 1018 ≈ 9 * 1018

Decimaltal

Datatyp Bitstorlek Min-värde Max-värde
float 32 3.4 * 1018 ≈ 3.4 * 1018
double 64 1.7 * 10308 ≈ 1.7 * 10308

Boolean datatyp

  • True som kan vara en etta
  • False som kan vara en nolla

Tecken och text

  • char (character) lagras tecken exempelvis ’a’, ’A’, ’b’, ’B’ och så vidare.
  • string är en uppsamling av flera char och där lagras ett helt ord, eller en hel mening. På svenska sträng.

Datatypen char i programmering används för att lagra enskilda tecken, såsom små bokstäver, stora bokstäver och andra symboler. I regel använder man 2 byte i primärminnet för att lagra ett enskilt tecken. Unicode är en standard för teckenkodning som innehåller en omfattande lista av tecken organiserade i en specifik ordning.

Specialtecken

I PowerShell, som i andra programmeringsspråk, finns speciella tecken som används för att representera vissa styrtecken och formateringssekvenser. Här är några exempel:

  • `\n: Representerar en ny rad (newline).
  • `\t: Representerar en tabulator.
  • `\b: Representerar ett backspace-tecken.
  • `”: Representerar en dubbel citat.
  • `’: Representerar en enkelt citat.

Variabler

I PowerShell kan du skapa variabler för att lagra och hantera data. För att skapa en variabel använder du $-tecknet följt av variabelnamnet och tilldelningsoperatorn =.

Bilden nedan visar ett exempel på hur en variabel kan skapas och hanteras:

  • Variabels namn är myVariable
  • Variabels värde är Hello, PowerShell learners
  • Cmdlet Get-Variable listar alla variabler i systemet
  • Variabeln anropas med dess namnet, $myVariable

Dynamisk typning

Generellt deklareras datatyper innan de kan lagras i någon variabel, men i PowerShell behöver du inte deklarera variablerna med en specifik datatyp – PowerShell är dynamiskt typat vilket innebär att du inte behöver deklarera en specifik datatyp för en variabel när du skapar den. Istället kan du tilldela värden av olika datatyper till samma variabel under dess livstid. Till exempel, i många andra programmeringsspråk måste du förklara vilken typ av data en variabel kommer att lagra när du deklarerar den:

  • int tal1 = 42          // här deklarerar vi en variabel som kan lagra heltal (int)

I PowerShell är det inte nödvändigt att ange datatypen:

  • $tal1 = 42            # Här skapar vi en variabel utan att ange datatyp.

Inbyggda variabler

PowerShell innehåller flera fördefinierade variabler som ger information om PowerShell-miljön och systemet. Exempel på några inbyggda variabler inkluderar:

  • $PSVersionTable: Innehåller information om den aktuella PowerShell-versionen.
  • $PWD: Representerar den aktuella arbetskatalogen (likvärdig Get-Location).
  • $Error: Innehåller information om senaste felmeddelandet.
  • $Host: Ger tillgång till information om PowerShell-värdet.

För att få en komplett lista över samtliga variabler, användarens egna och inbygga, i systemet:

  • Get-Variable

Men om du vill enbart se inbyggda variabler:

  • Get-Variable -Scope Global

Miljövariabler

Miljövariabler, även kallade systemvariabler, är variabler som lagrar information om systemkonfigurationen och dess beteende. Dessa variabler används av operativsystemet och programvaror för att hämta och lagra information om miljön där de körs. Miljövariabler är globala och kan kommas åt av olika program och processer.

I PowerShell refererar man till miljövariabler genom att använda $env: prefixet. Till exempel, $env:USERNAME ger användarnamnet för den aktuella användaren och $env:COMPUTERNAME ger namnet på datorn.

Här är några exempel på miljövariabler och deras syften:

  • $env:USERNAME: Innehåller användarnamnet för den aktuella användaren.
  • $env:COMPUTERNAME: Innehåller namnet på datorn.
  • $env:TEMP: Innehåller sökvägen till den temporära mappen.
  • $env:PATH: Innehåller sökvägarna till de exekverbara filerna som används av operativsystemet.
  • $env:HOME: Innehåller sökvägen till användarens hemkatalog.

PowerShell stödjer ett brett spektrum av datatyper. Här är några vanligt använda datatyper i PowerShell.

  • Strängar (string): Används för att lagra textdata. Strängar skrivs med enkla eller dubbla citattecken.
    • $message = ”This is a string.”
    • $name = ’Chalo Reyes’
    • $address = ”Just come 123”
    • Write-Host $name
  • Heltal (int, long, short, byte): Används för att lagra heltal av olika storlekar och omfång.
    • $age = 30
    • $count = 5
    • Write-Host $age
  • Flyttal (float, double): Används för att lagra decimaltal med olika precision.
    • $myFloat = 3.14
    • Write-Host $myFloat
    • $myDouble = 123.456
    • Write-Host $myDouble
  • Booleska värden: Används för att lagra sant eller falskt värde.
    • $isEnabled = $true
    • Write-Host ”Enabled: $isEnabled”
    • $hasPermission = $false
    • Write-Host ”Has Permission: $hasPermission”
  • Arrayer (array): Används för att lagra en samling av värden av samma datatyp.
    • $myArray = @(1, 2, 3, 4, 5)
    • Write-Host $myArray
    • $myArray = @(1, 2, 3, 4, 5)
    • Write-Host ”Det andra elementet är: $($myArray[1])”
    • $myArray = @(1, 2, 3, 4, 5)
    • $myArray[2] = 99
    • Write-Host $myArray
  • Objekt (object): Används för att lagra olika typer av objekt. PowerShell är objektorienterat, så många kommandon returnerar objekt.
    • # Skapa ett anpassat objekt
      $person = [PSCustomObject]@{
      Name = ”John Doe”
      Age = 30
      City = ”Example City”
      }
    • # Använd objektets egenskaper
      Write-Host ”Namn: $($person.Name)”
      Write-Host ”Ålder: $($person.Age)”
      Write-Host ”Stad: $($person.City)”

Använd GetType() för att verifiera vilken datatyp en variabel innehåller. Till exempel:

  • PS C:\>$name.GetType()
  • PS C:\>$myFloat.GetType
  • PS C:\>$myArray.GetType