Power Shell. Eine Klassendatei für benutzerdefinierte Objekte erstellen?

Ich verwende den benutzerdefinierten Objektbefehl von Powershell, um Datenpunkte zu speichern. Benutzerdefiniertes Objekt erstellt nur ein Objekt und weist ihm eine Variable zu. Kann Powershell noch einen Schritt weiter gehen und neue Klassen erstellen, aus denen Objekte erstellt werden können?

In den folgenden Beispielen speichere ich drei Daten: einen Servernamen, einen Zeitstempel und die Minuten seit dem Auftreten eines Ereignisses auf dem Server.

Als ich Powershell lernte, habe ich all dies in ein zweidimensionales Array geschrieben:

$record = @("Server","Timestamp","Minutes")
for ($j = 0; $j -lt 10; $j++){
    $record += @("Server1","$(get-date)",$j)
    sleep 60
    }
$record | export-csv -path c:\record.csv -no type information

Da export-csv mit Arrays nicht gut funktioniert, habe ich angefangen, ein benutzerdefiniertes Objekt zu verwenden:

$record = @()
for ($j = 0; $j -lt 10; $j++){
    $r = New-Object -TypeName PSObject
    $r | Add-Member -MemberType NoteProperty -Name Server -Value ""
    $r | Add-Member -MemberType NoteProperty -Name Timesteamp -Value ""
    $r | Add-Member -MemberType NoteProperty -Name Minutes -Value ""
    $r.server = "Server1"
    $r.timestamp = "$(get-date)"
    $r.minutes = "$j"
    $record += $r
    sleep 60
    }
$record | export-csv -path c:\record.csv -no type information

Das ist richtig exportiert, und der Umgang mit Objekteigenschaften ist einfacher als der Umgang mit Spalten in einem zweidimensionalen Array.

Wenn ich jedoch mehrere benutzerdefinierte Objekte erstellen möchte, die sich nicht in einem Array befinden, muss ich den Code für benutzerdefinierte Objekte immer wieder schreiben.

$server1 = New-Object -TypeName PSObject
$server1 | Add-Member -MemberType NoteProperty -Name Server -Value ""
$server1 | Add-Member -MemberType NoteProperty -Name Timesteamp -Value ""
$server2 = New-Object -TypeName PSObject
$server2 | Add-Member -MemberType NoteProperty -Name Server -Value ""
$server2 | Add-Member -MemberType NoteProperty -Name Timesteamp -Value ""
#ad nauseum

Was wäre, wenn Powershell kundenspezifisch designen könnte?Klassen zusätzlich zur GewohnheitObjekte? Wie OO-Programmiersprachen? So etwas wie:

class record {
    -MemberType NoteProperty -Name Server -Value ""
    -MemberType NoteProperty -Name Timestamp -Value ""
    -MemberType NoteProperty -Name Minutes -Value ""
    }
$server1 = new-object -TypeName record
$server2 = new-object -TypeName record
$server3 = new-object -TypeName record

Ist das in Powershell möglich?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage