Hantera objekt

I PowerShell är nästan allting objekt. PowerShell bygger på en objektbaserad modell snarare än en textbaserad modell som traditionella kommandoradsverktyg, exempelvis den gamla DOS. När du kör ett kommando i PowerShell returneras ofta objekt istället för en enkel textsträng. Objekten har egenskaper (properties) och metoder (methods) som du kan utforska och använda. Genom att använda Get-Member kan vi utforska och förstå strukturen hos olika objekt i PowerShell, vilket är användbart när du arbetar med cmdlets och skapar egna skript.

Här är några exempel som visar hur du kan använda Get-Member, men först en kort förklaring på ”pipe”.

I PowerShell är ”pipe” (|) ett sätt att skicka resultatet av en operation/kommando till en annan. Det fungerar som en rörledning där data flödar från vänster till höger. Med hjälp av pipen kan du kombinera olika cmdlets och utföra flera operationer i en enda kommando.

  1. Med en sträng:
    • PS C:\>$myString = ”Hello PowerShell!”
    • PS C:\>$myString | Get-Member
    • Utdata: en lång lista på metoder och en enda egenskap, längd
    • PS C:\>$myString | Get-Member -MemberType property
    • Utdata: Length
  2. Med processer:
    • PS C:\>Get-Process | Get-Member
    • Utdata: en lång lista på processer som är igång i systemet
    • PS C:\>Get-Process | Get-Member -MemberType method
    • Utdata: en kortare lista över metoder för att hantera processer
  3. Med applikationer, till exempel Notepad:
    • PS C:\>$myProcess = Get-Process -Name ”notepad”
    • Utdata: ingenting men PS hämtar information om processen notepad och lagrar i variabeln myProcess.
    • PS C:\>$myProcess
    • Utdata: visar vad som lagrats i variabeln
    • PS C:\>$myProcess | Get-Member
    • Utdata: en lång lista över alla metoder och egenskaper
  4. Med omdirigering resultat:
    • PS C:\>Get-Process | Output-File -Path ”c:\PShell\ProcessOnMySystem.txt”
    • Utdata: ingenting men PS skapar en lista över alla processer som är igång i systemet och lagrar i ett textdokument i stället att vis på skärmen. Nästa vill man se innehållet (content).
    • PS C:\>Get-Command -Verb Get -Noun content
    • PS C:\>Get-Content ”c:\PShell\ProcessOnMySystem.txt”
    • Utdata: flera kolumner av information om processerna
  5. Samma som i exempel 4, men med cmdlet Select-Object
    • PS C:\>$myFile = Get-Item -Path ”c:\PShell\ProcessOnMySystem.txt”
    • Utdata: ingenting men PS hämtar information om filen och lagrar den i variabeln myFile
    • PS C:\>$myFile | Select-Object -Property Name, Length | Get-Member
    • Utdata: visar metoder och egenskaper av filen i en tabell med tre kolumner.