Fejlmeddelelsen "Et element med samme nøgle er allerede tilføjet" vises, når du åbner en liste i VAMT 2.0 på en computer med Windows 7

Symptomer

Når du åbner en liste (.cil) i VAMT 2.0 (Volume Activation Management Tool) på en computer med Windows 7, kan du få vist følgende fejlmeddelelse:

Et element med samme nøgle er allerede tilføjet.

Årsag

Dette problem kan opstå, hvis der er flere netværkskort på computeren, og disse netværkskort har samme MAC-adresse. Problemet kan f.eks. opstå, hvis du har to netværkskort til en virtuel maskine, og du konfigurerer disse netværkskort til at have samme MAC-adresse.

Hvis du åbner .cil-filen i denne situation, kan du se en post, der ligner følgende:

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øsning

Hvis vi skal slette dublerede poster fra .CIL-filen for dig, skal du gå til afsnittet "Løs det for mig". Hvis du hellere vil slette dublerede poster fra .CIL-filen, skal du gå til afsnittet "Jeg vil selv løse problemet".

Løs det for mig



Du kan løse problemet automatisk ved at klikke på knappen eller linket Fix it. Klik derefter på Kør i dialogboksen Filoverførsel, og følg trinnene i guiden Fix it.




Bemærk!
  • Vælg en .CIL-fil, som du vil slette dublerede poster for.
  • Fix it-løsningen fungerer ikke, hvis VAMT 2.0 (Volume Activation Management Tool) ikke er installeret på standardstien.
  • Denne guide findes muligvis kun på engelsk. Den automatiske løsning fungerer dog også for andre sprogversioner af Windows.
  • Hvis du ikke arbejder på den computer, hvor problemet er opstået, kan du gemme løsningen på et flashdrev eller på en cd og derefter køre løsningen på den computer, der har problemet.

Gå derefter til afsnittet "Fik du løst problemet?".



Jeg vil selv løse problemet

Hvis du vil løse problemet ved manuelt at slette de dublerede poster fra .CIL-filen eller ved at automatisere denne proces, skal du bruge følgende kildekode for at oprette et

Powershell-script, der skal automatiseres.
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ølg derefter disse trin på en computer med Windows 7:
  1. Kopiér din gemte .CIL-fil til c:\script. Eksempel: c:\script\saved.cil
  2. Kopiér den inkluderede kode fra denne artikel i Knowledge Base til Udklipsholder
  3. Klik på Start, Alle programmer, Tilbehør, Windows Powershell, "Windows powershell ise"
  4. Klik på vinduet Untitled1.ps1 i Windows PowerShell
  5. Indsæt den i indholdet af scriptet fra denne artikel
  6. Klik på Filer, og gem som c:\script\ScrubCil.ps1
  7. Klik på Start, Alle programmer, Tilbehør, Windows Powershell, højreklik på "Windows powershell", og vælg "Kør som administrator"
  8. Skriv følgende kommandoer i powershell-prompttypen:
    cd \script
    set-executionpolicy unrestricted
    .\ScrubCil.ps1 saved.cil


Fik du løst problemet?

  • Undersøg, om problemet er blevet løst. Hvis problemet er løst, er du færdig med dette afsnit. Hvis problemet ikke er løst, kan du kontakte support.
  • Vi sætter pris på din feedback. Du kan give os feedback eller rapportere om problemer med denne løsning ved at oprette en kommentar på bloggen Løs det for mig eller sende os en e-mail.
Egenskaber

Artikel-id: 2383895 – Seneste udgave 21. dec. 2011 – Udgave 1

Feedback