Vytvoření vlastního modulu snap-in Windows PowerShellu

tento příklad ukazuje, jak napsat modul snap-in Windows PowerShell, který registruje konkrétní rutiny.

Pomocí tohoto typu modulu snap-in určíte, které rutiny, zprostředkovatele, typy nebo formáty mají být registrovány. další informace o tom, jak napsat modul snap-in, který registruje všechny rutiny a zprostředkovatele v sestavení, najdete v tématu zápis Windows PowerShell modulu snap-in.

chcete-li napsat modul Snap-in Windows PowerShell, který zaregistruje konkrétní rutiny.

  1. Přidejte atribut atributem RunInstallerAttribute.

  2. Vytvořte veřejnou třídu, která je odvozena z třídy System. Management. Automation. Custompssnapin .

    V tomto příkladu je název třídy "CustomPSSnapinTest".

  3. Přidejte veřejnou vlastnost pro název modulu snap-in (povinné). Při pojmenování modulů snap-in Nepoužívejte žádný z následujících znaků: # , . , , , ( , ) , { , } , [ , ] , & , - , / , \ , $ , ; , : , " , ' , < > | ? @ ` ,,,,,,,,,,,,,,,,,, *

    V tomto příkladu je název modulu snap-in "CustomPSSnapInTest".

  4. Přidejte veřejnou vlastnost pro dodavatele modulu snap-in (povinné).

    V tomto příkladu je dodavatel "Microsoft".

  5. Přidejte veřejnou vlastnost pro prostředek dodavatele modulu snap-in (volitelné).

    V tomto příkladu je prostředek dodavatele "CustomPSSnapInTest, Microsoft".

  6. Přidejte veřejnou vlastnost pro popis modulu snap-in (povinné).

    v tomto příkladu je popis: "toto je vlastní Windows PowerShell modul snap-in, který obsahuje Test-HelloWorld Test-CustomSnapinTest rutiny a".

  7. Přidejte veřejnou vlastnost pro popis prostředku modulu snap-in (volitelné).

    V tomto příkladu je prostředek dodavatele:

    CustomPSSnapInTest, jedná se o vlastní modul snap-in Windows PowerShell, který obsahuje rutiny Test-HelloWorld a Test-CustomSnapinTest.

  8. Určete rutiny, které patří do vlastního modulu snap-in (volitelné) pomocí třídy System. Management. Automation. prostředí runspace. Cmdletconfigurationentry . Sem přidané informace zahrnují název rutiny, její typ .NET a název souboru Help rutiny (formát názvu souboru Help rutiny by měl být name.dll-help.xml ).

    Tento příklad přidá rutiny Test-HelloWorld a TestCustomSnapinTest.

  9. Zadejte poskytovatele, kteří patří do vlastního modulu snap-in (volitelné).

    Tento příklad neurčuje žádné poskytovatele.

  10. Zadejte typy, které patří do vlastního modulu snap-in (volitelné).

    Tento příklad neurčuje žádné typy.

  11. Určete formáty, které patří do vlastního modulu snap-in (volitelné).

    V tomto příkladu nejsou zadány žádné formáty.

Příklad

tento příklad ukazuje, jak napsat vlastní modul snap-in Windows PowerShell, který lze použít k registraci Test-HelloWorld rutin a Test-CustomSnapinTest . Upozorňujeme, že v tomto příkladu může kompletní sestavení obsahovat jiné rutiny a zprostředkovatele, které by tento modul snap-in neregistroval.

[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;
    }
  }
}

další informace o registraci modulů snap-in najdete v tématu jak registrovat rutiny, zprostředkovatele a hostitelské aplikace v příručce pro Windows PowerShell programátory.

Viz také

Jak registrovat rutiny, zprostředkovatele a hostitelské aplikace

Windows PowerShell Sada SDK pro prostředí