Я написал небольшой командлет PowerShell в C #, который ожидает параметр словаря.Как структурировать HashTable (или другой объект) в сценарии PowerShell, чтобы я мог передать его в качестве параметра в мой командлет?
Я попытался создать HashTable в своем сценарии PowerShell следующим образом:
$dic = @{
"Key1" = 1,2,3;
"Key2" = "A","B","C";
}
И затем отправьте это в мой командлет:
$props | Add-Properties
Мой командлет:
public class AddProps : PSCmdlet {
[Parameter(ValueFromPipeline = true, Mandatory = true)]
public Dictionary<string, object[]> Props {get; set;}
protected override void ProcessRecord() {
DoSomethingWithProps(Props);
}
}
Я ожидал, что смогу написать короткий сценарий PowerShell, например так:
$dic = @{
"Key1" = 1,2,3;
"Key2" = "A","B","C";
}
$props | Add-Properties
Однако, когда я пытаюсь это сделать, я получаю эту ошибку:
Объект ввода не может быть привязан ни к каким параметрам команды, так как команда не принимает конвейерный вводили вход и его свойства не соответствуют ни одному из параметров, которые принимают конвейерный ввод
Я проверил тип $props
, и это действительно HashTable
.Посмотрев на другие вопросы, связанные с этой проблемой ввода конвейера и с тем, как создать HashTable
в PowerShell, я все еще не понимаю, что здесь происходит неправильно.