Programmation PowerShell/Les objets personnalisés
Les objets personnalisés
modifierL'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
modifierL'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
modifierL'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
modifierL'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
modifierIl 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
modifierIl est possible d'ajouter des méthodes à vos objets, etc.