Можно ли обмениваться свойствами и комментариями между командлетами Powershell в С#?

При предоставлении набора связанных функций в командлетах Powershell возможно ли совместно использовать имена свойств и сводную справку, чтобы нормализовать их для командлетов в сборке?

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

Вот чрезвычайно простой пример. Я хотел бы поделиться свойством «Имя» и всеми связанными комментариями, чтобы они были одинаковыми для N командлетов, которые мы производим, но я не могу придумать хороший способ сделать это в С#. В идеале любое совместное использование должно позволять указывать атрибуты параметров, такие как «Обязательный» или «Позиция».

namespace FrozCmdlets
{
using System.Management.Automation;

/// <summary>
/// Adds a new froz to the system.
/// </summary>
[Cmdlet( VerbsCommon.Add, "Froz" )]
public class AddFroz : Cmdlet
{
    /// <summary>
    /// The name of the froz.
    /// For more information on the froz, see froz help manual.
    /// </summary>
    [Parameter]
    public string Name { get; set; }

    protected override void ProcessRecord()
    {
        base.ProcessRecord();
        // Add the froz here
    }
}

/// <summary>
/// Removes a froz from the system.
/// </summary>
[Cmdlet( VerbsCommon.Remove, "Froz" )]
public class RemoveFroz : Cmdlet
{
    /// <summary>
    /// The name of the froz.
    /// For more information on the froz, see froz help manual.
    /// </summary>
    [Parameter]
    public string Name { get; set; }

    protected override void ProcessRecord()
    {
        base.ProcessRecord();
        // Remove the froz here
    }
}
}
8
задан pennyowe 16 July 2014 в 16:27
поделиться