Грешка "Елемент със същия ключ вече е добавен", когато отворите списък в VAMT 2.0 на компютър, базиран на Windows 7

Преводи на статии Преводи на статии
ID на статията: 2383895
Разгъване на всички | Сгъване на всички

СИМПТОМИ

Когато отворите списък (.cil) в инструмента за управление на корпоративно активиране (VAMT) 2.0 на компютър, базиран на Windows 7, може да получите следното съобщение за грешка:

Елемент със същия ключ е вече добавен.

ПРИЧИНА

Проблемът може да възникне, ако в компютъра има повече от един мрежов адаптер, а тези мрежови адаптери имат един и същ MAC адрес. Този проблем например може да възникне, ако имате два мрежови адаптери за виртуална машина и конфигурирате тези мрежови адаптери да имат един и същ MAC адрес.

Ако отворите .cil файла в тази ситуация, ще видите запис, който прилича на следното:

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>

РАЗРЕШЕНИЕ

За да изтрием ние дублираните записи от .CIL файла вместо вас, отидете на раздела "Решете моя проблем". Ако предпочитате да изтриете дублираните записи от .CIL файла сами, отидете на раздела "Нека реша проблема сам".

Решете моя проблем



За да решите автоматично този проблем, щракнете върху бутона или връзката Fix it. След това щракнете върху Изпълнение в диалоговия прозорец Изтегляне на файлове и следвайте стъпките в съветника Fix it.


Решение на проблема
Microsoft Fix it 50785


Забележки
  • Изберете .CIL файл, за който искате да изтриете дублираните записи.
  • Решението Fix it не работи, ако VAMT(инструмент за управление на корпоративно активиране) 2.0 не е инсталиран в пътя по подразбиране.
  • Възможно е този съветник да е само на английски език. Автоматичната корекция обаче работи и за други езикови версии на Windows.
  • Ако не сте на проблемния компютър, можете да запишете решението на проблема на флаш устройство или компактдиск и след това да го изпълните на проблемния компютър.

След това отидете на раздела "Това реши ли проблема?".



Нека реша проблема сам

За да заобиколите този проблем, изтрийте ръчно дублираните записи от .CIL файла, а за да автоматизирате този процес, използвайте следния първичен код за създаване на

PowerShell скрипт за автоматизиране.
param($inputFilePath, $vamtDirPath)

$cilFilePath = Resolve-Path $inputFilePath;
if (!$cilFilePath)
{
Write-Error "Очаквано име на входен файл на целеви 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 "Грешка при опит да се зареди VAMT блок с код. Дайте правилния път до вашата инсталация на VAMT, ако VAMT не е инсталиран в директорията по подразбиране.";
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);




След това изпълнете следните тези стъпки на компютър с Windows 7:
  1. Копирайте своя записан .CIL файл в c:\script. Например c:\script\saved.cil
  2. Копирайте включения първичен код от тази статия в БЗ в клипборда
  3. Щракнете върху "Старт", "Всички програми", "Принадлежности", Windows Powershell, Windows powershell ise
  4. В Windows PowerShell щракнете в прозореца на Untitled1.ps1
  5. Поставяне там съдържанието на скрипта от тази статия
  6. Щракнете върху "Файл", "Запиши като", c:\script\ScrubCil.ps1
  7. Щракнете върху "Старт", "Всички програми", "Принадлежности", щракнете с десния бутон върху Windows Powershell и изберете "Изпълнявай като администратор"
  8. В командния прозорец въведете следните команди
    cd \script
    set-executionpolicy unrestricted
    .\ScrubCil.ps1 saved.cil


Това реши ли проблема?

  • Проверете дали проблемът е решен. Ако е решен, не е необходимо да четете по-нататък в този раздел. Ако проблемът не е решен, може да се обърнете към поддръжката.
  • Ще ви бъдем признателни за предоставената от вас обратна информация. За да предоставите обратна информация или да съобщите за проблеми с това решение, добавете коментар в блога "Решете моя проблем" или ни изпратете имейл.
Note This is a "FAST PUBLISH" article created directly from within the Microsoft support organization. The information contained herein is provided as-is in response to emerging issues. As a result of the speed in making it available, the materials may include typographical errors and may be revised at any time without notice. See Terms of Use for other considerations.

Свойства

ID на статията: 2383895 - Последна рецензия: 21 декември 2011 г. - Редакция: 1.1
Ключови думи: 
kbfixme kbmsifixme KB2383895

Изпратете обратна информация

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com