Командлет: пользователь может вводить сложные типы данных при автоматическом запросе PowerShell - PullRequest
0 голосов
/ 21 января 2019

Я хочу, чтобы мой пользователь вводил данные для моего пользовательского типа данных «MyExampleType».

псевдо-код:

 [Cmdlet("Set", "MyExampleData")]
    public class SetMyExampleData
    {
        [Parameter(Position = 0, Mandatory = true)]
        public string Name{ get; set; }

        [Parameter(Position = 1, Mandatory = true)]
        public MyExampleType ExampleData { get; set; }

Насколько я понимаю, при автоматическом запросе powershell ожидает, что пользователь передаст экземпляр MyExampleType при запросе «ExampleData».

Можно ли каким-то образом заставить powershell самостоятельно запрашивать какое-либо значение? Итак, если «MyExampleType» будет выглядеть так:

public class MyExampleType
{
   public string Key { get; set; }
   public string Value { get; set; }

Тогда PowerShell запросит «Ключ», а затем «Значение»?

У меня обычно проблемы с созданием командлетов для обеспечения базовой конфигурации большего объема программного обеспечения (с точки зрения добавления к нему наборов данных конфигурации), и я пока не знаю, как заставить пользователя вводить данные, которые немного больше сложнее, чем просто отдельные значения. Мэйби, я здесь не совсем в порядке ...

1 Ответ

0 голосов
/ 21 января 2019

Вы можете написать промежуточную функцию со всеми полями в качестве параметров, которая будет присваивать эти параметры свойствам объекта пользовательского типа, а затем вызывать эту функцию без каких-либо параметров.В этом случае powershell попросит ввести значение каждого параметра.Пример (при условии, что $ obj определен где-то еще):

function fillMyType
{
   param(
   [Parameter(Mandatory=$true)]$Key,
   [Parameter(Mandatory=$true)]$Value
   )

   $obj.Key=$Key
   $obj.Value=$Value
}

fillMyType
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...