Programmation PowerShell/Les objets personnalisés

Les objets personnalisés

modifier

L'usage de PowerShell (ci-après PS) devient intéressant et réellement efficace lorsqu'on commence à créer ses propres objets. C'est la réelle plus-value d'un shell objet vs shell texte !

Retenez qu'il existe un type d'objet nommé PSCustomObject permettant de créer vos objets comme vous le voulez ! Vous allez pouvoir stocker les informations structurée selon vos besoin dans des collections (voir ou revoir la partie des tableaux).

Créer un objet

modifier

L'exemple ci-dessous vous montre comment créer un objet correspondant à vos besoins :

$myObject = New-Object -TypeName pscustomobject
$myObject | Add-Member -MemberType NoteProperty -Name 'ID' -Value '1'  
$myObject | Add-Member -MemberType NoteProperty -Name 'Inutile' -Value $true  
$myObject | Add-Member -MemberType NoteProperty -Name 'Name' -Value 'Alfonso'  
$myObject

Récupérer un objet ne contenant que ce dont on a besoin

modifier

L'exemple ci-dessous vous montre comment obtenir les propriétés désirées d'un objet comportant des dizaines de propriétés :

$obj = $myObject | Select-Object -Property Name, ID
$obj

Ajouter un objet à une collection

modifier

L'exemple ci-dessous vous montre comment ajouter vos objets dans une collection :

$obj2 = New-Object -TypeName pscustomobject
$obj2 | Add-Member -MemberType NoteProperty -Name 'Name' -Value 'Bertha'  
$obj2 | Add-Member -MemberType NoteProperty -Name 'ID' -Value 2  
$obj2
$maCollection = New-Object -TypeName System.Collections.ArrayList
$maCollection += $obj 
$maCollection += $obj2 
$maCollection

Boucler et enrichir la collection d'objets

modifier

Il est important de savoir ajouter, petit à petit des informations dans vos objets :

$maCollection | ForEach-Object { $_ | Add-Member -Type NoteProperty -Name 'NewThing' -Value 'NewValue' } 
# ou
$maCollection | ForEach-Object { $_ | Add-Member -Type NoteProperty 'NewThing2' 'NewValue2' } 
# ou
$maCollection | ForEach-Object { $_ | Add-Member 'NewThing3' 'NewValue3' } 
$maCollection

Il est utile de savoir ajouter des valeurs calculées dans vos objets :

$maCollection | ForEach-Object { $_ | Add-Member @{'idTime3'=($_.ID * 3)} }
# ou
$maCollection | ForEach-Object { $_ | Add-Member 'idTime3bis' ($_.ID * 6) }

Aller plus loin avec les objets

modifier

Il est possible d'ajouter des méthodes à vos objets, etc.