Erreur « Un élément avec la même clé a déjà été ajouté » lorsque vous ouvrez une liste dans VAMT 2.0 sur un ordinateur Windows 7
Cet article vous aide à corriger une erreur (un élément avec la même clé a déjà été ajouté) qui se produit lorsque vous ouvrez une liste dans Outil Gestion de l'activation en volume (VAMT) 2.0.
S’applique à :Windows 7 Service Pack 1
Numéro de la base de connaissances d’origine : 2383895
Symptômes
Lorsque vous ouvrez une liste (.cil
) dans VAMT 2.0 sur un ordinateur Windows 7, le message d’erreur suivant peut s’afficher :
Un élément avec la même clé a déjà été ajouté.
Cause
Ce problème peut se produire s’il existe plusieurs cartes réseau sur l’ordinateur et que ces cartes réseau ont la même adresse MAC. Par exemple, ce problème peut se produire si vous avez deux cartes réseau pour une machine virtuelle et que vous configurez ces cartes réseau pour qu’elles aient la même adresse MAC.
Si vous ouvrez le fichier CIL dans ce cas, vous voyez une entrée qui ressemble à ce qui suit :
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>
Résolution
Pour résoudre ce problème, supprimez manuellement les entrées dupliquées du CIL ou pour automatiser ce processus, utilisez le code source suivant pour créer un script PowerShell à automatiser.
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);
Ensuite, procédez comme suit sur un ordinateur Windows 7 :
Copiez votre fichier CIL enregistré dans c :\script. Par exemple, c :\script\saved.cil
Copiez le code source inclus de cet article de la Base de connaissances dans le Presse-papiers
Cliquez sur Démarrer, Tous les programmes, Accessoires, Windows PowerShell, « Windows PowerShell ise »
Dans Windows PowerShell, cliquez dans la fenêtre Untitled1.ps1
Coller le contenu du script de cet article
Cliquez sur Fichier, enregistrer sous, c:\script\ScrubCil.ps1
Cliquez sur Démarrer > tous les accessoires > de programmes > Windows PowerShell, cliquez avec le bouton droit sur « Windows PowerShell », puis choisissez « Exécuter en tant qu’administrateur ».
À l’invite PowerShell, tapez les commandes suivantes
cd\script set-executionpolicy unrestricted .\ScrubCil.ps1 saved.cil
Collecte de données
Si vous avez besoin de l’aide du support Microsoft, nous vous recommandons de collecter les informations en suivant les étapes mentionnées dans Collecter des informations à l’aide de TSS pour les problèmes liés au déploiement.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour