У меня есть XML файл, который из-за повторного запуска скриптов и структуры папок может содержать дубликаты элементов пакета (см. Последние два пакета в примере XML).
Теперь мне нужна функция Powershell, которая удаляет все дубликаты пакетов , Дубликат в этом случае определяется точной комбинацией производителя, имени, версии, имени файла и исключения. Например, не следует удалять одинаковые пакеты программного обеспечения с разными версиями.
Пример XML:
<?xml version="1.0" encoding="iso-8859-1"?>
<softwaremetering xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="softwaremetering.xsd">
<package>
<manufacturer>BAFU</manufacturer>
<name>EconoMe-Offline</name>
<version>3.0</version>
<filename>
</filename>
<exeversion>
</exeversion>
</package>
<package>
<manufacturer>BAFU</manufacturer>
<name>EconoMe-Offline</name>
<version>4.0.20</version>
<filename>EconoMe-4_WinStart.exe</filename>
<exeversion>*</exeversion>
</package>
<package>
<manufacturer>BAFU</manufacturer>
<name>Hakesch</name>
<version>1.0.3b</version>
<filename>
</filename>
<exeversion>
</exeversion>
</package>
<package>
<manufacturer>BAFU</manufacturer>
<name>Hakesch</name>
<version>1.04</version>
<filename>hakesch.exe</filename>
<exeversion>*</exeversion>
</package>
<package>
<manufacturer>Balesio</manufacturer>
<name>ALLCaptureEnterprise</name>
<version>3.0</version>
<filename>
</filename>
<exeversion>
</exeversion>
</package>
<package>
<manufacturer>Banana</manufacturer>
<name>Buchhaltung</name>
<version>7.0</version>
<filename>
</filename>
<exeversion>
</exeversion>
</package>
<package>
<manufacturer>Banana</manufacturer>
<name>Buchhaltung</name>
<version>9.0</version>
<filename>banana90.exe</filename>
<exeversion>*</exeversion>
</package>
<package>
<manufacturer>Banana</manufacturer>
<name>Buchhaltung</name>
<version>9.0.4</version>
<filename>Banana90.exe</filename>
<exeversion>*</exeversion>
</package>
<package>
<manufacturer>Barco</manufacturer>
<name>ClickShare-Extension-Pack</name>
<version>1.0.2.3</version>
<filename>clicksharelauncher.exe</filename>
<exeversion>*</exeversion>
</package>
<package>
<manufacturer>Barco</manufacturer>
<name>ClickShare-Extension-Pack</name>
<version>1.0.4.3</version>
<filename>clicksharelauncher.exe</filename>
<exeversion>*</exeversion>
</package>
<package>
<manufacturer>Bernina</manufacturer>
<name>Sticksoftware</name>
<version>5.0</version>
<filename>
</filename>
<exeversion>
</exeversion>
</package>
<package>
<manufacturer>Bernina</manufacturer>
<name>Sticksoftware</name>
<version>5.0</version>
<filename>
</filename>
<exeversion>
</exeversion>
</package>
</softwaremetering>