New-Object add-member — невозможно добавить члена — powershell

У меня проблема :( У меня много ошибок, когда я добавляю новый объект с тем же именем свойства, что и раньше Object .

«Add-Member: невозможно добавить члена с именем «ServerName», потому что член с таким именем уже существует. Чтобы все равно перезаписать член, добавьте в команду параметр Force».

работает но с ошибками ;) Есть у кого решение для меня??

Ниже пример кода:

$OutputObj = @()

$OutputObj += New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name ServerName -Value "server1"
$OutputObj | Add-Member -MemberType NoteProperty -Name Status -Value "online"
$OutputObj | Add-Member -MemberType NoteProperty -Name Uptime -Value "01:20"

$OutputObj += New-Object -TypeName PSobject
$OutputObj | Add-Member -MemberType NoteProperty -Name ServerName -Value "server2"
$OutputObj | Add-Member -MemberType NoteProperty -Name Status -Value "online"
$OutputObj | Add-Member -MemberType NoteProperty -Name Uptime -Value "01340"

person mino    schedule 12.11.2017    source источник


Ответы (1)


Вы добавляете элемент в массив, а не в объект. Попробуйте следующее:

$OutputObj = @()

$NewObj = New-Object -TypeName PSobject
$NewObj | Add-Member -MemberType NoteProperty -Name ServerName -Value "server1"
$NewObj | Add-Member -MemberType NoteProperty -Name Status -Value "online"
$NewObj | Add-Member -MemberType NoteProperty -Name Uptime -Value "01:20"

$OutputObj += $NewObj

$NewObj = New-Object -TypeName PSobject
$NewObj | Add-Member -MemberType NoteProperty -Name ServerName -Value "server2"
$NewObj | Add-Member -MemberType NoteProperty -Name Status -Value "online"
$NewObj | Add-Member -MemberType NoteProperty -Name Uptime -Value "01340"
$OutputObj += $NewObj

В качестве альтернативы я бы сделал следующее:

$OutputObj = @()
$OutputObj += New-Object -TypeName PSobject -Property @{
    ServerName = "server1"
    Status = "Online"
    Uptime = "01:20"
}


$OutputObj += New-Object -TypeName PSobject -Property @{
    ServerName = "server2"
    Status = "Online"
    Uptime = "01340"
}

Поскольку Add-Member уничтожает и генерирует новый объект каждый раз, когда он используется.

person Micky Balladelli    schedule 12.11.2017
comment
Но мне нужно все в одном объекте - person mino; 12.11.2017
comment
В вашем решении вывод $OutpuObj - это только последний член - server2, мне нужны server1 и server2 в выводе - person mino; 12.11.2017