У меня есть xml, который выглядит следующим образом:
myobjects>
<allobjects>
<object name="firstObject" username="usr" pass="pass" specialLine="E:\folder1\files for home /c /x /waitsecs 30 " default="Yes" binary="1"/>
<object name="secondObjec" username="usr1" pass="thispass" specialLine="E:\folder1\files for home /c /x /waitsecs 30 " default="no" binary="1" />
<object name="thirdObject" username="usr2" pass="pass1" specialLine="E:\folder1\files for home /c /x /waitsecs 40 " default="Yes" binary ="0" />
<object name="fourthObject" username="usr3" pass="pass3" specialLine="D:\folder1\files for office /c /x /waitsecs 50 " default="Yes" binary="1"/>
<object name="firstobject 1" username="usr4" pass="pass5" specialLine="E:\folder1\files for home /c /x /waitsecs 30 " default="Yes" binary="0"/>
</allobjects>
<myobjects
Я хочу удалить каждый элемент со значением "binary="0"
, который я мог бы легко выполнить, используя where-Object
, как показано ниже:
[xml]$myfile = [xml](Get-content path_to_my_file)
$myfile.myobjects.allobjects.childNodes | where-object{$_.binary -eq 0} |foreach-Object{ do my deletion function}
Что я хочу сделать дальше, это удалить каждый узел, где значение specialLine
одинаково (остается только один узел для каждого точно такого же specialLines
). Я мог получить уникальный specialLines
, используя этот $myfile.myobjects.allobjects.object.special | sort-object | get-Unique
, и я просто не могу найти способ удалить узлы и остаться с узлами с уникальными специальными линиями. Я пробовал что-то вроде этого:
$myfile.myobjects.allobjects.childNodes | where-object{$myfile.myobjects.allobjects.object.special | sort-object | get-Unique`} |foreach-Object{ do my deletion function}
, но я думаю, что что-то упустил, или мой подход к этому совершенно неверен. Любые предложения или помощь будут оценены.