2012-02-03 7 views
4

Quelqu'un peut-il me dire comment ajouter un paramètre à mon habitude cmdlets C# qui est un Hashtable/StringDictionary, afin que je puisse appeler ma cmdlet d'une manière qui ressemble à ceci:Powershell C# Cmdlet avec Hashtable/paramètres Dictionnaire

CustomCmdlet -File $someFilePath ` 
       -StringDictionary/HashtableParameter @{ 
          "name1"="value1" 
          "name2"="value2" 
          "name3"="value3" 
          ... 
         } 

Je ne trouve tout simplement aucune documentation/exemple qui explique clairement et simplement comment faire cela, ou si c'est même possible pour les cmdlets personnalisées.

Puis-je utiliser simplement:

[Parameter(Mandatory = false, Position = 9)] 
    public Dictionary<string,string> FieldValues { get; set; } 

    [Parameter(Mandatory = false, Position = 9)] 
    public HashTable FieldValues { get; set; } 

    ... 

Ou autre chose?

Amitiés

+0

"Puis-je utiliser ...?" - Oui, ça a l'air correct. –

+1

Au moins, il devrait certainement travailler pour 'Hashtable'. Vous pouvez ensuite transmettre les valeurs '@ {...}' de votre script à la cmdlet. –

Répondre

4

Vous pouvez utiliser les éléments suivants

public Hashtable[] SearchCriteria { get; set; } 

avoir le funcitonality comme

Start-Process calc -PassThru | Get-UIAWindow | Get-UIAButton -SearchCriteria @{automationid="13*";name="[3-5]"},@{name="c*"},@{name="a*"},@{isenabled="false"} | Read-UIAControlName 

La sortie est

entrée Effacer

Effacer

Ajouter

Maximize

Fermer

+0

La classe 'Hashtable' se trouve dans l'espace de noms' System.Collections' au cas où quelqu'un d'autre cherche. – Nick

Questions connexes