Fehler "Ein Element mit demselben Schlüssel wurde bereits hinzugefügt" beim Öffnen einer Liste in VAMT 2.0 auf einem Windows 7-basierten Computer

Dieser Artikel hilft bei der Behebung eines Fehlers (Ein Element mit demselben Schlüssel wurde bereits hinzugefügt), der auftritt, wenn Sie eine Liste in Tool für die Volumenaktivierungsverwaltung (VAMT) 2.0 öffnen.

Gilt für: Windows 7 Service Pack 1
Ursprüngliche KB-Nummer: 2383895

Symptome

Wenn Sie eine Liste (.cil) in VAMT 2.0 auf einem Windows 7-basierten Computer öffnen, wird möglicherweise die folgende Fehlermeldung angezeigt:

Ein Element mit demselben Schlüssel wurde bereits hinzugefügt.

Ursache

Dieses Problem kann auftreten, wenn mehrere Netzwerkadapter auf dem Computer vorhanden sind und diese Netzwerkadapter die gleiche MAC-Adresse haben. Dieses Problem kann beispielsweise auftreten, wenn Sie über zwei Netzwerkadapter für einen virtuellen Computer verfügen und diese Netzwerkadapter so konfigurieren, dass sie dieselbe MAC-Adresse haben.

Wenn Sie die CIL-Datei in dieser Situation öffnen, wird ein Eintrag angezeigt, der dem folgenden ähnelt:

NetworkName="contoso.com" Id="e3f3f83c-f050-4d81-9117-xx">
<MacAddresses>
<MacAddress>00:11:11:CF:FC:xx</MacAddress>
<MacAddress>00:11:11:CF:FC:xx</MacAddress>
</MacAddresses>

Lösung

Um dieses Problem zu beheben, löschen Sie die doppelten Einträge manuell aus der CIL, oder verwenden Sie den folgenden Quellcode, um ein PowerShell-Skript zur Automatisierung zu erstellen, um diesen Prozess zu automatisieren.


param($inputFilePath, $vamtDirPath)

$cilFilePath = Resolve-Path $inputFilePath;

if (!$cilFilePath)

{

Write-Error "Expected input file name of target CIL";

exit 1;

}

if ($vamtDirPath)

{

$vamtDirPath = Resolve-Path $vamtDirPath;

}

else

{

$prograPath = [environment]::GetEnvironmentVariable("ProgramFiles(x86)");

if (!$prograPath -or $prograPath -eq "")

{

$prograPath = [environment]::GetEnvironmentVariable("ProgramFiles");

}

$vamtDirPath = $prograPath + "\VAMT 2.0"

}

try

{

$assembly = [System.Reflection.Assembly]::LoadFile($vamtDirPath + "\Vamtrt.dll");

}

catch

{

Write-Error "Error while attempting to load VAMT assembly. Provide the correct path to your VAMT installation if VAMT is not installed to the default directory.";

exit 1;

}

$fileSerializer = new-object Microsoft.SoftwareLicensing.Vamt.FileSerializer($cilFilePath);

$softwareLicensingData = $fileSerializer.Deserialize();

for ($i = 0; $i -lt $softwareLicensingData.Machines.Length; $i++)

{

$machine = $softwareLicensingData.Machines[$i];

if ($machine.MacAddresses.Count -gt 0)

{

$distinctMacAddrs = new-object System.Collections.ObjectModel.Collection[string];

foreach ($mac in $machine.MacAddresses)

{

if (!$distinctMacAddrs.Contains($mac))

{

$distinctMacAddrs.Add($mac);

}

}

$machine.MacAddresses.Clear();

foreach ($distinctMac in $distinctMacAddrs)

{

$machine.MacAddresses.Add($distinctMac);

}

}

}

$fileSerializer.Serialize($softwareLicensingData);

Führen Sie dann die folgenden Schritte auf einem Windows 7-Computer aus:

  1. Kopieren Sie Ihre gespeicherte CIL-Datei in c:\script. Beispiel: c:\script\saved.cil

  2. Kopieren des enthaltenen Quellcodes aus diesem KB-Artikel in die Zwischenablage

  3. Klicken Sie auf Start, Alle Programme, Zubehör, Windows PowerShell, "Windows PowerShell ise"

  4. Klicken Sie in Windows PowerShell im fenster Untitled1.ps1 auf

  5. Einfügen des Inhalts des Skripts aus diesem Artikel

  6. Klicken Sie auf Datei, speichern unter, c:\script\ScrubCil.ps1

  7. Klicken Sie auf Alle Programme >> starten > Windows PowerShell, klicken Sie mit der rechten Maustaste auf "Windows PowerShell", und wählen Sie "Als Administrator ausführen" aus.

  8. Geben Sie an der PowerShell-Eingabeaufforderung die folgenden Befehle ein.

    cd\script
    set-executionpolicy unrestricted
    .\ScrubCil.ps1 saved.cil
    

Datensammlung

Wenn Sie Unterstützung vom Microsoft-Support benötigen, empfehlen wir Ihnen, die Informationen zu sammeln, indem Sie die Schritte unter Sammeln von Informationen mithilfe von TSS für Bereitstellungsprobleme ausführen.