hello and thank you for help in advance.
I am getting info out of VMWARE. This is not a problem. I am placing the information into custom PSOBJECT.
VMs may have multiple datastores, and network information. I am simply adding new objects appended with a number added to the noteproperty.
My problem comes when trying access the information.
VM 1 may have only 1 datastore, which would be datastore0
VM2 may have 3 datastores, datastore0,1,2
I am trying to loop through the notepropery names for datastore(X) and network info(X). So I get the information I placed there.
$t = 0
while($value.DataStore+$t){
write-host $value."DataStore"+$t
$t++
<code>
$vmarray = @()
foreach($vm in $vms){
$vminfo = Get-VM -Name $vm | Select Name, DatastoreIdList, @{N="IPAddress";E={@($_.guest.IPAddress[0])}}
$datastore = Get-Datastore -Id $vminfo.DatastoreIdList
$portgroup = Get-VirtualPortGroup -VM $vm
$MAC = Get-NetworkAdapter -VM $vm | Select MacAddress
$netinfo = Get-NetworkAdapter -VM $vm | Select Name, MacAddress, NetworkName
$info = New-Object -TypeName PSObject
$info | Add-Member -MemberType NoteProperty -Name VmName -Value $vminfo.Name
$info | Add-Member -MemberType NoteProperty -Name IPAddress -Value $vminfo.IPAddress
#list all datastores
$z=0
foreach($item in $datastore){
Add-Member -InputObject $info -MemberType NoteProperty -Name DataStore$z -Value $item
$z++
}
#list all network adapter info
$i=0
foreach($item in $netinfo){
Add-Member -InputObject $info -MemberType NoteProperty -Name PortGroup$i -Value $item.Name
Add-Member -InputObject $info -MemberType NoteProperty -Name MACAddress$i -Value $item.MacAddress
Add-Member -InputObject $info -MemberType NoteProperty -Name Adapter$i -Value $item.NetworkName
$i++
}
$vmarray += $info
}
$vmarray
foreach ($value in $vmarray){
write-host $value.VmName
write-host $value.IPAddress
$t = 0
while($value.DataStore+$t){
write-host $value."DataStore"+$t
$t++
}
$s=0
while($value.Adapter+$s){
write-host $value.Adapter$s
write-host $value.PortGroup$s
write-host $value.MACAddress$s
$s++
}
}
</code>