Powershell: Obiekt o właściwościach nazwanych jak w tablicy

1-gru-2015

Chcesz mieć obiekt, który ma właściwości o wybranych przez Ciebie nazwach. Może np. czytasz konfigurację z pliku ini i z zapisu:

Name=Server001
Domain=domain.pl
Service=SQL
chcesz utworzyć obiekt o właściwościach:
$obj.Name      # o wartości Server01
$obj.Domain    # o wartości domain.pl
$obj.Service   # o wartości SQL

Oto co należy zrobić:

Tworzysz obiekt:

 $obj = New-Object -TypeName psobject

A potem wykonujesz kolejno:

$obj | Add-Member -MemberType NoteProperty -Name 'Name'    -Value 'Server01'
$obj | Add-Member -MemberType NoteProperty -Name 'Domain'  -Value 'domain.pl'
$obj | Add-Member -MemberType NoteProperty -Name 'Service' -Value 'SQL'

Kiedy chcesz się odwołać do właściwości $obj zrobisz to np. tak:

if( $obj.Name -eq 'Server003')
{
 ...
}

A jeśli masz 2 tabele – jedną z nazwami a drugą z wartościami, to tworzenie obiektu mozesz wykonać następującym skryptem:

$obj = New-Object -TypeName psobject
$tabName  = 'Name','Domain','Service' 
 $tabVal = 'Server01','Domain.pl','SQL'
for($i=0;$i -lt $tabName.count;$i++) 
 { 
         $obj | Add-Member -MemberType NoteProperty -Name $tabName[$i] -Value $tabVal[$i] 
 }
$obj.Name
$obj.Domain
$obj.Service
Autor: Rafał Kraik