Pisanie niestandardowej przystawki programu Windows PowerShell

W tym przykładzie pokazano, jak napisać Windows PowerShell, która rejestruje określone polecenia cmdlet.

W przypadku tego typu przystawki można określić, które polecenia cmdlet, dostawcy, typy lub formaty mają być rejestrowane. Aby uzyskać więcej informacji na temat pisania przystawki, która rejestruje wszystkie polecenia cmdlet i dostawców w zestawie, zobacz Zapisywanie przystawki Windows PowerShell przystawki .

Aby napisać Windows PowerShell przystawki, która rejestruje określone polecenia cmdlet.

  1. Dodaj atrybut RunInstallerAttribute.

  2. Utwórz klasę publiczną pochodzącą z klasy System.Management.Automation.Custompssnapin.

    W tym przykładzie nazwa klasy to "CustomPSSnapinTest".

  3. Dodaj właściwość publiczną dla nazwy przystawki (wymagane). Podczas nazewnictwa przyciągań nie używaj żadnego z następujących znaków: # , , , , , , , , , . , , , ( ) { } [ ] & - / \ $ ; , : " ' < > | ? @ ` , *

    W tym przykładzie nazwa przystawki to "CustomPSSnapInTest".

  4. Dodaj właściwość publiczną dla dostawcy przystawki (wymagane).

    W tym przykładzie dostawca to "Microsoft".

  5. Dodaj właściwość publiczną dla zasobu dostawcy przystawki (opcjonalnie).

    W tym przykładzie zasób dostawcy to "CustomPSSnapInTest,Microsoft".

  6. Dodaj właściwość publiczną dla opisu przystawki (wymagane).

    W tym przykładzie opis to: "Jest to niestandardowa Windows PowerShell, która zawiera polecenia Test-HelloWorld Test-CustomSnapinTest cmdlet i ".

  7. Dodaj właściwość publiczną dla zasobu opisu przystawki (opcjonalnie).

    W tym przykładzie zasób dostawcy to:

    CustomPSSnapInTest, jest to niestandardowa Windows PowerShell, która zawiera polecenia cmdlet Test-HelloWorld i Test-CustomSnapinTest".

  8. Określ polecenia cmdlet należące do niestandardowej przystawki (opcjonalnie) przy użyciu klasy System.Management.Automation.Runspaces.Cmdletconfigurationentry. Informacje dodane w tym miejscu obejmują nazwę polecenia cmdlet, jego typ .NET i nazwę pliku pomocy polecenia cmdlet (format pliku pomocy polecenia cmdlet powinien mieć wartość name.dll-help.xml ).

    W tym przykładzie dodano Test-HelloWorld cmdlet TestCustomSnapinTest.

  9. Określ dostawców należących do przystawki niestandardowej (opcjonalnie).

    W tym przykładzie nie określono żadnych dostawców.

  10. Określ typy należące do niestandardowej przystawki (opcjonalnie).

    W tym przykładzie nie określono żadnych typów.

  11. Określ formaty należące do przystawki niestandardowej (opcjonalnie).

    W tym przykładzie nie określono żadnych formatów.

Przykład

W tym przykładzie pokazano, jak napisać niestandardową Windows PowerShell przystawkę, która może służyć do rejestrowania Test-HelloWorld polecenia Test-CustomSnapinTest cmdlet i . Należy pamiętać, że w tym przykładzie kompletny zestaw może zawierać inne polecenia cmdlet i dostawców, którzy nie zostaną zarejestrowani przez tę przystawkę.

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

Aby uzyskać więcej informacji na temat rejestrowania przyciągnień, zobacz How to Register Cmdlets, Providers, and Host Applications (Jak rejestrować polecenia cmdlet, dostawców i aplikacje hosta) w przewodniku Windows PowerShell Programmer's Guide(Jak rejestrować polecenia cmdlet, dostawcy i aplikacje hosta) w przewodniku programisty programu Windows PowerShell.

Zobacz też

Jak rejestrować polecenia cmdlet, dostawców i aplikacje hosta

Windows PowerShell Zestaw SDK powłoki