Написание пользовательской оснастки Windows PowerShell

в этом примере показано, как написать Windows PowerShell оснастку, которая регистрирует определенные командлеты.

С помощью этого типа оснастки вы указываете, какие командлеты, поставщики, типы или форматы нужно зарегистрировать. дополнительные сведения о написании оснастки, которая регистрирует все командлеты и поставщики в сборке, см. в разделе написание оснастки Windows PowerShell.

для записи оснастки Windows PowerShell, которая регистрирует определенные командлеты.

  1. Добавьте атрибут Рунинсталлераттрибуте.

  2. Создайте открытый класс, производный от класса System. Management. Automation. кустомпсснапин .

    В этом примере имя класса — «Кустомпсснапинтест».

  3. Добавьте открытое свойство для имени оснастки (обязательно). При именовании оснасток не используйте следующие символы: # , . , , ,, ( ) , { , } , [ , ] , & , - / \ $ ; : " ' < > | ? @ ` ,,,,,,,,,,,,,, *

    В этом примере имя оснастки — «Кустомпсснапинтест».

  4. Добавьте открытое свойство для поставщика оснастки (обязательно).

    В этом примере поставщиком является "Microsoft".

  5. Добавьте открытое свойство для ресурса поставщика оснастки (необязательно).

    В этом примере ресурсом поставщика является "Кустомпсснапинтест, Microsoft".

  6. Добавьте открытое свойство для описания оснастки (обязательно).

    в этом примере описание: "это пользовательская оснастка Windows PowerShell, которая включает Test-HelloWorld Test-CustomSnapinTest командлеты и".

  7. Добавьте открытое свойство для ресурса описания оснастки (необязательно).

    В этом примере ресурсом поставщика является:

    кустомпсснапинтест, это настраиваемая оснастка Windows PowerShell, которая включает Test-HelloWorld и Test-CustomSnapinTest командлеты».

  8. Укажите командлеты, принадлежащие к пользовательской оснастке (необязательно), с помощью класса System. Management. Automation. пространства. кмдлетконфигуратионентри . Добавляемые здесь сведения включают имя командлета, его тип .NET и имя файла справки командлета (формат имени файла справки командлета должен быть name.dll-help.xml ).

    В этом примере добавляются командлеты Test-HelloWorld и Тесткустомснапинтест.

  9. Укажите поставщиков, принадлежащих к пользовательской оснастке (необязательно).

    В этом примере не указаны поставщики.

  10. Укажите типы, принадлежащие к пользовательской оснастке (необязательно).

    В этом примере не указаны типы.

  11. Укажите форматы, принадлежащие к пользовательской оснастке (необязательно).

    В этом примере не указаны никакие форматы.

Пример

в этом примере показано, как написать настраиваемую оснастку Windows PowerShell, которая может использоваться для регистрации Test-HelloWorld Test-CustomSnapinTest командлетов и. Имейте в виду, что в этом примере полная сборка может содержать другие командлеты и поставщики, которые не будут зарегистрированы в этой оснастке.

[RunInstaller(true)]
public class CustomPSSnapinTest : CustomPSSnapIn
{
  /// <summary>
  /// Creates an instance of CustomPSSnapInTest class.
  /// </summary>
  public CustomPSSnapinTest()
          : base()
  {
  }

  /// <summary>
  /// Specify the name of the custom PowerShell snap-in.
  /// </summary>
  public override string Name
  {
    get
    {
      return "CustomPSSnapInTest";
    }
  }

  /// <summary>
  /// Specify the vendor for the custom PowerShell snap-in.
  /// </summary>
  public override string Vendor
  {
    get
    {
      return "Microsoft";
    }
  }

  /// <summary>
  /// Specify the localization resource information for the vendor.
  /// Use the format: resourceBaseName,resourceName.
  /// </summary>
  public override string VendorResource
  {
    get
    {
        return "CustomPSSnapInTest,Microsoft";
    }
  }

  /// <summary>
  /// Specify a description of the custom PowerShell snap-in.
  /// </summary>
  public override string Description
  {
    get
    {
      return "This is a custom PowerShell snap-in that includes the Test-HelloWorld and Test-CustomSnapinTest cmdlets.";
    }
  }

  /// <summary>
  /// Specify the localization resource information for the description.
  /// Use the format: resourceBaseName,Description.
  /// </summary>
  public override string DescriptionResource
  {
    get
    {
        return "CustomPSSnapInTest,This is a custom PowerShell snap-in that includes the Test-HelloWorld and Test-CustomSnapinTest cmdlets.";
    }
  }

  /// <summary>
  /// Specify the cmdlets that belong to this custom PowerShell snap-in.
  /// </summary>
  private Collection<CmdletConfigurationEntry> _cmdlets;
  public override Collection<CmdletConfigurationEntry> Cmdlets
  {
    get
    {
      if (_cmdlets == null)
      {
        _cmdlets = new Collection<CmdletConfigurationEntry>();
        _cmdlets.Add(new CmdletConfigurationEntry("test-customsnapintest", typeof(TestCustomSnapinTest), "TestCmdletHelp.dll-help.xml"));
        _cmdlets.Add(new CmdletConfigurationEntry("test-helloworld", typeof(TestHelloWorld), "HelloWorldHelp.dll-help.xml"));
      }

      return _cmdlets;
    }
  }

  /// <summary>
  /// Specify the providers that belong to this custom PowerShell snap-in.
  /// </summary>
  private Collection<ProviderConfigurationEntry> _providers;
  public override Collection<ProviderConfigurationEntry> Providers
  {
    get
    {
      if (_providers == null)
      {
        _providers = new Collection<ProviderConfigurationEntry>();
      }

      return _providers;
    }
  }

  /// <summary>
  /// Specify the types that belong to this custom PowerShell snap-in.
  /// </summary>
  private Collection<TypeConfigurationEntry> _types;
  public override Collection<TypeConfigurationEntry> Types
  {
    get
    {
      if (_types == null)
      {
        _types = new Collection<TypeConfigurationEntry>();
      }

      return _types;
    }
  }

  /// <summary>
  /// Specify the formats that belong to this custom PowerShell snap-in.
  /// </summary>
  private Collection<FormatConfigurationEntry> _formats;
  public override Collection<FormatConfigurationEntry> Formats
  {
    get
    {
      if (_formats == null)
      {
        _formats = new Collection<FormatConfigurationEntry>();
      }

      return _formats;
    }
  }
}

дополнительные сведения о регистрации оснасток см. в разделе регистрация командлетов, поставщиков и ведущих приложений руководства программиста Windows PowerShell.

См. также:

Регистрация командлетов, поставщиков и ведущих приложений

Пакет SDK Windows PowerShell