When using Powershell the Add-Member function can be used for manipulation of the object tree.
Following Function should read a CSV with Customers and their corresponding domain names and build a object tree as follows :
Customer1--- some attributes
|__ Domainname1---some attributes
|__ Domainname2---some attributes
Customer2--- some Attribute
|__ Domainname3---some attributes
Customer3--- some attributes
|__ Domainname1---some attributes
|__ Domainname2---some attributes
|__ Domainname3---some attributes
The CSV File is a unsorted list of customers with their domains and looks like :
Kunde,Domain
"Customer1", "DomainName1"
"Customer2", "DomainName3"
"Customer1", "DomainName2"
"Customer3", "DomainName4"
After adding the domainname3 to the customer2 the domainname3 is seen also on the customer1 object as possible child.
the result tree looks like this in the debugger :
Customer1--- some attributes
|__ Domainname1---some attributes
|__ Domainname2---some attributes
|__ Domainname3---some attributes
Customer2--- some Attribute
|__ Domainname1---some attributes
|__ Domainname2---some attributes
|__ Domainname3---some attributes
How can I get the planned result ?
The powershell function :
Function ReadCustomerDomains([string]$File )
{
$CSVData = Import-Csv $File -Delimiter ","
$CustomerListObject = New-Object PSObject
ForEach ($Item in $CSVData)
{
if ( Get-Member -InputObject $CustomerListObject -name $($Item.Kunde) )
{
}
else
{
$CustomerListObject | Add-Member -NotePropertyName "$($Item.Kunde)" -NotePropertyValue $Customer_Properties
}
}
ForEach ($Item in $CSVData)
{
$CustomerItem = $CustomerListObject.$($Item.Kunde)
Add-Member -InputObject $CustomerItem -NotepropertyName "$($Item.Domain)" -NotePropertyValue $Customer_Domain_Properties
$CustomerItem =$Null
}
$CustomerList += $CustomerListObject
return $CustomerList
}