файлов xml такого вида.
<?xml version="1.0" encoding="utf-8"?>
<Parent>
<props>
<DisplayName>app1</DisplayName>
</props>
<guid>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874483"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874484"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874485"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874486"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874487"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874488"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874489"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874490"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874491"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874492"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874493"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874494"/>
</guid>
</Parent>
<?xml version="1.0" encoding="utf-8"?>
<Parent>
<props>
<DisplayName>app1</DisplayName>
</props>
<guid>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874483"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874484"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874485"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874486"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874487"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874488"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874489"/>
<Class Id="f2b18648-5f4b-4907-9aeb-b0ab08874490"/>
</guid>
</Parent>
DisplayName мб одинаковый, а список гуидов частично совпадать. При совпадении DisplayName в разных файлах нужно вывести список уникальных гуидов и соответствующих им DisplayName.
Я хожу вокруг да около втч select -unique и group, но не могу сообразить, как это сделать.
$files = Get-ChildItem -Force "xml*.xml"
foreach ($file in $files) {
$xml = [xml] (Get-Content ($file).FullName)
$name = $xml.Parent.props.displayname
$guids = $xml.Parent.guid.Class.id
foreach ($guid in $guids) {
Write-Host $name $guid $аppname
}
}
Write-Host выводит не уникальное кнч.
Я смог запихать это в хэш таблицу, потому что она по натуре своей принимает только уникальные значения. Но это некрасиво, ошибки приходится подавлять.
Подскажите простой и эффективный способ, плиз.
Ну, через Compare-Object массивы сравнивают на intersect. Также можно с помощью GroupBy из LINQ и Count по аналогии с SQL.
просто и эффективный я просил :)
Compare-Object
ладно
Обсуждают сегодня