Powershell. Créer un fichier de classe pour tenir des Objets Personnalisés?

- Je utiliser Powershell personnalisée de la commande objet de tenir des points de données. Objets personnalisés crée qu'un seul objet et affecte une variable à elle. Peut Powershell aller plus loin et de créer de nouvelles classes d'objets qui peuvent être faites?

Dans les exemples ci-dessous, je stocke les trois ensembles de données: un nom de serveur, un timestamp, et les minutes depuis un événement a eu lieu sur le serveur.

Quand j'apprenais Powershell, j'ai mis tout cela dans un tableau à deux dimensions:

$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

export-csv ne joue pas bien avec les tableaux, j'ai donc commencé à l'aide d'un objet personnalisé:

$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

Que les exportations de l'correctement, et de traiter avec les propriétés de l'objet est plus facile que de traiter avec des colonnes dans un tableau à deux dimensions.

Mais si je veux créer plusieurs objets personnalisés qui ne sont pas dans un tableau, je dois écrire le code de l'objet, encore et encore.

$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

Que si Powershell design personnalisé classes en plus personnalisée objets? Comme OO langages de programmation n'? Quelque chose comme:

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

Est-ce possible dans Powershell?

  • Les lecteurs de l'avenir: Notez que comme de Powershell 5.0 classes personnalisées sont une fonctionnalité intégrée à l'aide du mot-clé Class, qui prend en charge les propriétés, les méthodes, plusieurs constructeurs, etc, le tout en utilisant typique powershell syntaxe. Pas besoin d'apprendre le c# ou utiliser l'assortiment très intelligent solutions de contournement et kludges décrit ci-dessous.
  • Ici, c'est le about_Classes page: docs.microsoft.com/en-us/powershell/module/...
InformationsquelleAutor Bagheera | 2013-09-09