Felet "En post med samma nyckel har redan lagts till" uppstår när du öppnar en lista i VAMT 2.0 på en dator med Windows 7

Symptom

När du öppnar en CIL-lista i VAMT 2.0-verktyget (Volume Activation Management Tool) på en dator med Windows 7 kan följande felmeddelande visas:

En post med samma nyckel har redan lagts till.

Orsak

Det här problemet kan uppstå om det finns flera nätverkskort i datorn och om dessa nätverkskort har samma MAC-adress. Problemet kan till exempel uppstå om du har två nätverkskort för en virtuell dator och har konfigurerat dessa nätverkskort med samma MAC-adress.

Om CIL-filen öppnas visas då en post av följande slag:

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

Om du vill att vi ska ta bort dubblettposterna från CIL-filen åt dig, går du till avsnittet Lös det åt mig. Om du hellre vill göra det själv går du till avsnittet Jag löser det själv.

Lös det åt mig



Om du vill att problemet ska åtgärdas automatiskt klickar du på knappen eller länken Fix it. Klicka sedan på Kör i dialogrutan Filhämtning och följ anvisningarna i Fix it-guiden.




Obs!
  • Markera CIL-filen som du vill ta bort dubblettposter för.
  • Fix it-lösningen fungerar inte om VAMT (Volume Activation Management Tool) 2.0 inte har installerats på standardsökvägen.
  • Den här guiden finns eventuellt bara på engelska. Den automatiska korrigeringsfilen fungerar dock även för andra språkversioner av Windows.
  • Om du inte sitter vid datorn där problemet finns kan du spara Fix it-lösningen på ett flashminne eller en cd och sedan köra den på rätt dator.

Gå sedan till avsnittet Löste det här problemet?.



Jag löser det själv

Du kan undvika problemet genom att manuellt ta bort dubblettposter från CIL-listan eller göra processen automatisk genom att skapa ett

PowerShell-skript med följande källkod:
param($inputFilePath, $vamtDirPath)

$cilFilePath = Resolve-Path $inputFilePath;

if (!$cilFilePath)

{

Write-Error "Förväntat indatafilnamn på mål-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 "Fel vid inläsning av VAMT-sammansättning. Ange rätt sökväg till VAMT-installationen om VAMT inte är installerat i standardkatalogen.";

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ölj sedan dessa anvisningar på en dator med Windows 7:
  1. Kopiera den sparade CIL-filen till c:\script. Till exempel c:\script\saved.cil
  2. Kopiera källkoden i denna KB-artikel till Urklipp
  3. Klicka på Start, Alla program, Tillbehör, Windows Powershell, Windows Powershell ISE
  4. Klicka i fönstret Untitled1.ps1 i Windows PowerShell
  5. Klistra in innehållet i skriptet från den här artikeln
  6. Klicka på Arkiv, Spara som, c:\script\ScrubCil.ps1
  7. Klicka på Start, Alla program, Tillbehör, Windows Powershell. Högerklicka på Windows Powershell och välj Kör som administratör
  8. Skriv följande kommandon i kommandotolken för Powershell
    cd \script
    set-executionpolicy unrestricted
    .\ScrubCil.ps1 saved.cil


Löste det här problemet?

  • Kontrollera om problemet har lösts. I så fall är du klar med det här avsnittet. Om problemet inte är åtgärdat kan du kontakta supporten.
  • Skicka oss gärna dina synpunkter. Om du vill ge oss feedback eller rapportera eventuella problem med den här lösningen kan du skriva en kommentar på bloggen Lös det åt mig eller skicka ett e-postmeddelande till oss.
Egenskaper

Artikel-id: 2383895 – senaste granskning 20 dec. 2011 – revision: 1

Feedback