Dela via


Skriva en anpassad Windows PowerShell-snapin-modul

Det här exemplet visar hur du skriver en Windows PowerShell-snapin-modul som registrerar specifika cmdletar.

Med den här typen av snapin-modul anger du vilka cmdletar, leverantörer, typer eller format som ska registreras. Mer information om hur du skriver en snapin-modul som registrerar alla cmdletar och providrar i en sammansättning finns i Writing a Windows PowerShell Snap-in.

Så här skriver du en Windows PowerShell-snapin-modul som registrerar specifika cmdletar.

  1. Lägg till attributet RunInstallerAttribute.

  2. Skapa en offentlig klass som härleds från klassen System.Management.Automation.CustomPSSnapIn.

    I det här exemplet är klassnamnet "CustomPSSnapinTest".

  3. Lägg till en offentlig egenskap för namnet på snapin-modulen (krävs). När du namnger snapin-moduler använd inte något av följande tecken: #, ., ,, (, ), {, }, [, ], &, -, , }, [, ], &, -, /, \, $, ;, :, ", ', <, >, |, ?, @, `, *

    I det här exemplet är namnet på snapin-modulen "CustomPSSnapInTest".

  4. Lägg till en offentlig egenskap för leverantören av snapin-modulen (krävs).

    I det här exemplet är leverantören "Microsoft".

  5. Lägg till en offentlig egenskap för leverantörsresursen för snapin-modulen (valfritt).

    I det här exemplet är leverantörsresursen "CustomPSSnapInTest,Microsoft".

  6. Lägg till en offentlig egenskap för beskrivningen av snapin-modulen (krävs).

    I det här exemplet är beskrivningen: "Det här är en anpassad Windows PowerShell-snapin-modul som innehåller cmdletarna Test-HelloWorld och Test-CustomSnapinTest".

  7. Lägg till en offentlig egenskap för beskrivningsresursen för snapin-modulen (valfritt).

    I det här exemplet är leverantörsresursen:

    CustomPSSnapInTest, Det här är en anpassad Windows PowerShell-snapin-modul som innehåller cmdletarna Test-HelloWorld och Test-CustomSnapinTest".

  8. Ange de cmdletar som tillhör den anpassade snapin-modulen (valfritt) med hjälp av klassen System.Management.Automation.Runspaces.CmdletConfigurationEntry. Informationen som läggs till här innehåller namnet på cmdleten, dess .NET-typ och cmdletens hjälpfilnamn (formatet för cmdletens hjälpfilnamn ska vara name.dll-help.xml).

    Det här exemplet lägger till cmdletarna Test-HelloWorld och TestCustomSnapinTest.

  9. Ange de leverantörer som tillhör den anpassade snapin-modulen (valfritt).

    I det här exemplet anges inga leverantörer.

  10. Ange de typer som tillhör den anpassade snapin-modulen (valfritt).

    Det här exemplet anger inga typer.

  11. Ange de format som tillhör den anpassade snapin-modulen (valfritt).

    I det här exemplet anges inga format.

Exempel

Det här exemplet visar hur du skriver en anpassad Windows PowerShell-snapin-modul som kan användas för att registrera cmdletarna Test-HelloWorld och Test-CustomSnapinTest. Tänk på att den fullständiga sammansättningen i det här exemplet kan innehålla andra cmdletar och leverantörer som inte skulle registreras av den här snapin-modulen.

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

Mer information om hur du registrerar snapin-moduler finns i How to Register Cmdlets, Providers, and Host Applications in the Windows PowerShell Programmer's Guide.

Se även

Registrera cmdletar, leverantörer och värdprogram

Windows PowerShell Shell SDK