2016-07-06 3 views
0

J'essaie de faire un script d'installation avec PowerShell en utilisant le Microsoft API build. Je sais comment je peux faire ce que je veux en C#, j'ai testé un petit exemple, et je l'ai presque préparé en PowerShell. J'ai seulement besoin de savoir quoi remplir en tant que paire de valeur clé.Comment utiliser une fonction api qui veut une paire de clés de valeur dans powershell

C#:

ProjectItemGroupElement slItemGroup = project.Xml.CreateItemGroupElement(); 
project.Xml.InsertAfterChild(slItemGroup, project.Xml.LastChild); 
List<KeyValuePair<string, string>> metadata = new List<KeyValuePair<string, string>>(); 
var testkvp = new KeyValuePair<string, string>(@"HintPath",@"MyPath"); 
metadata.Add(testkvp); 
slItemGroup.AddItem(@"Reference", @"microsoft.deployment.windowsinstaller", metadata); 

En Powershell je suis arrivé aussi loin que ce qui fonctionne, mais je ne sais pas comment définir le troisième paramètre. Pouvez-vous me donner un indice?

$itemGroup = $msBuildProj.Xml.CreateItemGroupElement() 
$msBuildProj.Xml.InsertBeforeChild($itemGroup, $myImport) 
$itemGroup.AddItem('Reference', 'Microsoft.Deployment.WindowsInstaller') 
#$itemGroup.AddItem('Reference', 'Microsoft.Deployment.WindowsInstaller', ???) 

Répondre

0

Je suis assez sûr de ce que vous voulez est un objet Dictionary comme ceci:

$metadata = New-Object 'System.Collections.Generic.Dictionary[String, String]' 
$metadata.add('HintPath','MyPath') 
$itemGroup.AddItem('Reference', 'Microsoft.Deployment.WindowsInstaller', $metadata) 

qui crée le dictionnaire, ajoute la paire clé/valeur, et utilise ensuite pour créer l'élément.

+0

Merci qui a fonctionné –

+0

Si cette solution fonctionne pour vous s'il vous plaît marquer la réponse comme acceptée pour aider les futurs demandeurs de trouver le trouver. – TheMadTechnician

+0

Je l'ai fait maintenant ... Désolé d'être un Noob mais il m'a fallu quelques minutes pour savoir où ce bouton était. :) Merci encore! –