Sdílet prostřednictvím


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

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

Pomocí tohoto typu modulu snap-in určíte, které rutiny, zprostředkovatele, typy nebo formáty se mají zaregistrovat. 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 modulu snap-in prostředí Windows PowerShell.

Pokud chcete napsat modul snap-in Prostředí Windows PowerShell, který registruje konkrétní rutiny.

  1. Přidejte atribut RunInstallerAttribute.

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

    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í modul snap-in Prostředí Windows PowerShell, který obsahuje rutiny Test-HelloWorld a Test-CustomSnapinTest".

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

    V tomto příkladu je zdroj dodavatele:

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

  8. Zadejte rutiny, které patří do vlastního modulu snap-in (volitelné) pomocí třídy System.Management.Automation.Runspaces.CmdletConfigurationEnt ry. Zde přidané informace zahrnují název rutiny, jeho typ .NET a název souboru nápovědy rutiny (formát souboru nápovědy rutiny by měl být name.dll-help.xml).

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

  9. Zadejte zprostředkovatele, kteří patří k vlastnímu modulu snap-in (volitelné).

    Tento příklad nezadá žádné zprostředkovatele.

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

    Tento příklad nezadá žádné typy.

  11. Zadejte formáty, které patří k vlastnímu modulu snap-in (volitelné).

    Tento příklad nezadá žádné formáty.

Příklad

Tento příklad ukazuje, jak napsat vlastní modul snap-in Windows PowerShellu, který se dá použít k registraci Test-HelloWorld a rutin Test-CustomSnapinTest. Mějte na paměti, že v tomto příkladu by úplné sestavení mohlo obsahovat další rutiny a zprostředkovatele, které by tento modul snap-in nezaregistroval.

[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 naleznete v tématu Postup registrace rutin, poskytovatelů a hostitelských aplikací v Windows PowerShell Programmer's Guide.

Viz také

registrace rutin, poskytovatelů a hostitelských aplikací

windows PowerShell Shell SDK