By Patrick Wahlmueller

KI und Automatisierung in der Praxis

PowerShell 1 Min. Lesezeit

Eine Kopfzeile in ein Array übernehmen

Drei Wege, einem einfachen PowerShell-Array Eigenschaftsnamen hinzuzufügen, damit Elemente per benannter Eigenschaft statt per Indexposition zugänglich sind.

Heute wurde ich gefragt, wie man einem Array eine „Kopfzeile” hinzufügt – damit man auf seinen Inhalt per Eigenschaft wie $obj.Kontoname zugreifen kann statt per Index.

Die Inspiration kam von Import-Csv -Header. Hier sind drei Lösungen:

1. Explizit – mit einer Klasse

class Benutzer {
    [String]$Kontoname
    Benutzer ([String[]]$Benutzername) {
        $this.Kontoname = $Benutzername
    }
}

@('meinBenutzer', 'DeinBenutzer') | ForEach-Object { [Benutzer]::new($_) }

2. Implizit – mit Select-Object (kürzer)

@('meinBenutzer', 'DeinBenutzer') | Select-Object @{ l = 'Kontoname'; e = { $_ } }

3. Implizit – mit PSCustomObject

@('meinBenutzer', 'DeinBenutzer') | ForEach-Object {
    [PSCustomObject]@{ Kontoname = $_ }
}

Ergebnisse

In allen drei Fällen ist die Ausgabe ein Object[]. Der Unterschied: Die Klassenvariante enthält stark typisierte Benutzer-Objekte, während die anderen beiden generische PSCustomObject-Instanzen erzeugen.