Een array is een datastructuur bestaande uit verschillende elementen met elk een eigen unieke index. Deze array kun je vervolgens op verschillende manieren gebruiken voor het opvragen van data. In dit artikel behandelen we hier enkele voorbeelden van.

Data verzamelen in een variabele

In dit voorbeeld gebruiken we de output van de functie Get-Process. Deze functie geeft als output alle processen welke momenteel actief zijn op het systeem. De output van deze functie plaatsen we in een nieuwe variabele $Process.

$Processes = Get-Process

Wanneer we deze variabelen opvragen krijg je iets vergelijkbaars te zien zoals op de onderstaande afbeelding wordt weergegeven. Wij willen echter deze processen afzonderlijk van elkaar kunnen gebruiken. Hier komt het gebruik van een array goed van pas.

JPortal.nl-Blog-Powershell-Arrays-1

 

Array vullen

Eerst maken we een array aan met de naam $ProcessesArray. Vervolgens maken we gebruik van de functie foreach om elk proces aan onze array toe te voegen. Elk proces plaatsen we in een object waar we door middel van een hashtable enkel de kolommen opslaan die wij willen gaan gebruiken. In ons voorbeeld zijn dit ProcessName, CPU, Id en WS.

$ProcessesArray = @()

foreach($Proc in $Processes){
  $ProcessesArray += New-Object psobject -Property @{'Id' = $Proc.Id; 'ProcessName' = $Proc.ProcessName; 'CPU' = $Proc.CPU; 'WS' = $Proc.WS}
}

Op de onderstaande afbeelding wordt een voorbeeld weergegeven van de informatie uit onze array.

JPortal.nl-Blog-Powershell-Arrays-2

 

Array filteren

In ons voorbeeld willen we alleen de processen zien die meer dan 10MB geheugen gebruiken. Ook willen we graag dat het geheugen gebruiken in MB wordt weergegeven. Voor deze aanpassen gebruiken we een if statement die alleen de processen aan de array toevoegt als deze meer dan 100MB geheugen gebruiken. We passen ook de functie [math]::Round() toe voor het afronden van geheugen waardes.

$Processes = Get-Process
$ProcessesArray = @()

foreach($Proc in $Processes){
  If($Proc.WS/1mb -gt 100) {
    $ProcessesArray += New-Object psobject -Property @{'Id' = $Proc.Id; 'ProcessName' = $Proc.ProcessName; 'WS' = [math]::Round($Proc.WS/1mb)}
  }
}

Op de onderstaande afbeelding wordt het resultaat van onze array weergegeven.

JPortal.nl-Blog-Powershell-Arrays-3

 

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *