Use XPATH instead to find all nodes with the SID attribute as follows:
$objs = @() $nodes = $userfile.SelectNodes("//*[@SID]") foreach ($node in $nodes) { $sid = $node.attributes['SID'].value $dispName = $node.attributes['DISPLAYNAME'].value $obj = new-object psobject -prop @{SID=$sid;DISPNAME=$dispName} $objs += $obj } $objs
Here is an output example:
$xml = [xml]@" <doc> <foo SID='foosid' DISPLAYNAME="foodisp"> <bar SID='barsid' DISPLAYNAME="bardisp"/> <baz> <blech SID='blechsid' DISPLAYNAME="blechdisp"/> </baz> </foo> </doc> "@ $objs = @() $nodes = $xml.SelectNodes("//*[@SID]") foreach ($node in $nodes) { $sid = $node.attributes['SID'].value $dispName = $node.attributes['DISPLAYNAME'].value $obj = new-object psobject -prop @{SID=$sid;DISPNAME=$dispName} $objs += $obj } $objs
Outputs:
SID DISPNAME --- -------- foosid foodisp barsid bardisp blechsid blechdisp
Keith hill
source share