2012-02-03 2 views
4

Может кто-нибудь сказать мне, как добавить параметр к моим командлетам пользовательских C# который является Hashtable/StringDictionary, так что я могу назвать мой Командлет в пути, который напоминает это:Powershell C# Cmdlet с Hashtable/словарем параметрами

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

Я просто не могу найти документацию/пример, который ясно и просто объясняет, как это сделать, или, если это возможно даже для пользовательских командлетов.

Могу ли я просто использовать:

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

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

    ... 

Или что-то еще?

Сердечные приветы

+0

"Могу ли я просто использовать ...?" - Да, это выглядит правильно. –

+1

По крайней мере, это определенно должно работать для 'Hashtable'. Затем вы можете передать значения '@ {...}' из вашего сценария в командлет. –

ответ

4

Вы можете использовать следующую

public Hashtable[] SearchCriteria { get; set; } 

иметь как дальнейшем функциональных

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

Выход

Очистить запись

Clear

Добавить

Maximize

Закрыть

+0

Класс 'Hashtable' находится в пространстве имен' System.Collections', если кто-то еще ищет. – Nick

Смежные вопросы