Bagikan melalui


Menulis Snap-in Windows PowerShell Kustom

Contoh ini menunjukkan cara menulis snap-in Windows PowerShell yang mendaftarkan cmdlet tertentu.

Dengan jenis snap-in ini, Anda menentukan cmdlet, penyedia, jenis, atau format mana yang akan didaftarkan. Untuk informasi selengkapnya tentang cara menulis snap-in yang mendaftarkan semua cmdlet dan penyedia dalam rakitan, lihat Menulis Snap-in Windows PowerShell.

Untuk menulis Snap-in Windows PowerShell yang mendaftarkan cmdlet tertentu.

  1. Tambahkan atribut RunInstallerAttribute.

  2. Buat kelas publik yang berasal dari kelas System.Management.Automation.CustomPSSnapIn.

    Dalam contoh ini, nama kelas adalah "CustomPSSnapinTest".

  3. Tambahkan properti publik untuk nama snap-in (diperlukan). Saat penamaan snap-in, jangan gunakan salah satu karakter berikut: #, ., ,, (, ), {, }, [, ], &, -, /, \, $, ;, :, ", ', <, >, |, ?, @, `, *

    Dalam contoh ini, nama snap-in adalah "CustomPSSnapInTest".

  4. Tambahkan properti publik untuk vendor snap-in (diperlukan).

    Dalam contoh ini, vendor adalah "Microsoft".

  5. Tambahkan properti publik untuk sumber daya vendor snap-in (opsional).

    Dalam contoh ini, sumber daya vendor adalah "CustomPSSnapInTest,Microsoft".

  6. Tambahkan properti publik untuk deskripsi snap-in (diperlukan).

    Dalam contoh ini, deskripsinya adalah: "Ini adalah snap-in Windows PowerShell kustom yang menyertakan cmdlet Test-HelloWorld dan Test-CustomSnapinTest".

  7. Tambahkan properti publik untuk sumber daya deskripsi snap-in (opsional).

    Dalam contoh ini, sumber daya vendor adalah:

    CustomPSSnapInTest, Ini adalah snap-in Windows PowerShell kustom yang mencakup cmdlet Test-HelloWorld dan Test-CustomSnapinTest".

  8. Tentukan cmdlet yang termasuk dalam snap-in kustom (opsional) menggunakan kelas System.Management.Automation.Runspaces.CmdletConfigurationEntry. Informasi yang ditambahkan di sini mencakup nama cmdlet, jenis .NET-nya, dan nama file Bantuan cmdlet (format nama file Bantuan cmdlet harus name.dll-help.xml).

    Contoh ini menambahkan cmdlet Test-HelloWorld dan TestCustomSnapinTest.

  9. Tentukan penyedia yang termasuk dalam snap-in kustom (opsional).

    Contoh ini tidak menentukan penyedia apa pun.

  10. Tentukan jenis yang termasuk dalam snap-in kustom (opsional).

    Contoh ini tidak menentukan jenis apa pun.

  11. Tentukan format yang termasuk dalam snap-in kustom (opsional).

    Contoh ini tidak menentukan format apa pun.

Contoh

Contoh ini menunjukkan cara menulis snap-in Windows PowerShell Kustom yang dapat digunakan untuk mendaftarkan cmdlet Test-HelloWorld dan Test-CustomSnapinTest. Ketahuilah bahwa dalam contoh ini, rakitan lengkap dapat berisi cmdlet dan penyedia lain yang tidak akan didaftarkan oleh snap-in ini.

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

Untuk informasi selengkapnya tentang mendaftarkan snap-in, lihat Cara Mendaftarkan Cmdlet, Penyedia, dan Aplikasi Host di Panduan Programmer Windows PowerShell .

Lihat Juga

Cara Mendaftarkan Cmdlet, Penyedia, dan Aplikasi Host

Windows PowerShell Shell SDK