Megosztás a következőn keresztül:


Egyéni Windows PowerShell beépülő modul írása

Ez a példa bemutatja, hogyan írhat egy Windows PowerShell beépülő modult, amely bizonyos parancsmagokat regisztrál.

Ezzel a beépülő modultípussal megadhatja, hogy mely parancsmagokat, szolgáltatókat, típusokat vagy formátumokat szeretné regisztrálni. Az összes parancsmagot és szolgáltatót szerelvényben regisztráló beépülő modul írásáról további információt A Windows PowerShell beépülő modulírása című témakörben talál.

Adott parancsmagokat regisztráló Windows PowerShell beépülő modul írása.

  1. Adja hozzá a RunInstallerAttribute attribútumot.

  2. Hozzon létre egy nyilvános osztályt, amely a System.Management.Automation.CustomPSSnapIn osztályból származik.

    Ebben a példában az osztály neve "CustomPSSnapinTest".

  3. Adjon hozzá egy nyilvános tulajdonságot a beépülő modul nevéhez (kötelező). Beépülő modulok elnevezésekor ne használja a következő karakterek egyikét sem: #, ., ,, (, ), {, }, [, ], &, -, /, \, $, ;, :, ", ', <, >, |, ?, @, `, *

    Ebben a példában a beépülő modul neve "CustomPSSnapInTest".

  4. Adjon hozzá egy nyilvános tulajdonságot a beépülő modul szállítójához (kötelező).

    Ebben a példában a szállító a "Microsoft".

  5. Adjon hozzá egy nyilvános tulajdonságot a beépülő modul szállítói erőforrásához (nem kötelező).

    Ebben a példában a szállítói erőforrás a "CustomPSSnapInTest,Microsoft".

  6. Adjon hozzá egy nyilvános tulajdonságot a beépülő modul leírásához (kötelező).

    Ebben a példában a leírás a következő: "Ez egy egyéni Windows PowerShell beépülő modul, amely tartalmazza a Test-HelloWorld és Test-CustomSnapinTest parancsmagokat".

  7. Adjon hozzá egy nyilvános tulajdonságot a beépülő modul leírási erőforrásához (nem kötelező).

    Ebben a példában a szállítói erőforrás a következő:

    CustomPSSnapInTest, Ez egy egyéni Windows PowerShell beépülő modul, amely tartalmazza a Test-HelloWorld és Test-CustomSnapinTest parancsmagokat".

  8. Adja meg az egyéni beépülő modulhoz tartozó parancsmagokat (nem kötelező) a System.Management.Automation.Runspaces.CmdletConfigurationEntry osztály használatával. Az itt hozzáadott információk közé tartozik a parancsmag neve, a .NET típusa és a parancsmag súgófájljának neve (a parancsmag súgófájljának formátumának name.dll-help.xmlkell lennie).

    Ez a példa hozzáadja a Test-HelloWorld és a TestCustomSnapinTest parancsmagokat.

  9. Adja meg az egyéni beépülő modulhoz tartozó szolgáltatókat (nem kötelező).

    Ez a példa nem ad meg szolgáltatókat.

  10. Adja meg az egyéni beépülő modulhoz tartozó típusokat (nem kötelező).

    Ez a példa nem ad meg semmilyen típust.

  11. Adja meg az egyéni beépülő modulhoz tartozó formátumokat (nem kötelező).

    Ez a példa nem ad meg formátumokat.

Példa

Ez a példa bemutatja, hogyan írhat egyéni Windows PowerShell beépülő modult, amely a Test-HelloWorld és Test-CustomSnapinTest parancsmagok regisztrálásához használható. Vegye figyelembe, hogy ebben a példában a teljes szerelvény tartalmazhat olyan parancsmagokat és szolgáltatókat, amelyeket ez a beépülő modul nem regisztrálna.

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

További információ a beépülő modulok regisztrálásáról: Parancsmagok, szolgáltatók és gazdagépalkalmazások regisztrálása a Windows PowerShell programozói útmutatójában.

Lásd még:

Parancsmagok, szolgáltatók és gazdagépalkalmazások regisztrálása

Windows PowerShell Shell SDK