Вам необходимо переместить создание PSObject в цикл. В противном случае вы получите ошибки, что свойства уже существуют для объекта.
Во-вторых, вам нужно указать Add-Member
, на каком объекте работать. Это можно сделать, передав объект в командлет или указав его в параметре InputObject
. Наконец, верните объект обратно в конвейер, указав переключатель PassThru
на последнем вызове Add-Member
:
ForEach ($objItem in $colItems)
{
$obj = New-Object -TypeName PSobject
Add-Member -InputObject $obj -MemberType NoteProperty -Name ComputerName -Value $ComputerName
Add-Member -InputObject $obj -MemberType NoteProperty -Name MacAddress -Value $objItem.MacAddress
Add-Member -InputObject $obj -MemberType NoteProperty -Name IPAddress -Value $objitem.IpAddress -PassThru
}
В качестве альтернативы вы можете упростить процесс с помощью параметра New-Object's
-Property
:
Get-WmiObject Win32_NetworkAdapterConfiguration -ComputerName $ComputerName -Filter "IpEnabled=TRUE" | Foreach-Object {
New-Object -TypeName PSobject -Property @{
ComputerName=$ComputerName
MacAddress=$_.MacAddress
IPAddress=$_.IpAddress
}
}
Или с помощью Select-Object
:
Get-WmiObject ... | Select-Object @{n='ComputerName';e={$_.__SERVER}},MacAddress,IpAddress