Escribir un complemento personalizado de Windows PowerShell
Este ejemplo muestra cómo escribir un complemento de Windows PowerShell que registre cmdlets específicos.
Con este tipo de complemento, usted especifica qué cmdlets, proveedores, tipos o formatos registrar. Para obtener más información sobre cómo escribir un complemento que registre todos los cmdlets y proveedores en un ensamblado, consulte Escritura de un complemento de Windows PowerShell.
Escribir un complemento de Windows PowerShell que registre cmdlets específicos.
Agregue el atributo RunInstallerAttribute.
Cree una clase pública que derive de la clase System.Management.Automation.Custompssnapin.
En este ejemplo, el nombre de la clase es "CustomPSSnapinTest".
-
Agregue una propiedad pública para el nombre del complemento (obligatorio). Al nombrar complementos, no utilice ninguno de los siguientes caracteres:
#,.,,,(,), {, }, [, ], & , -, /, \, $, ;, :, ", ', <, >, |, ?, @, `, * En este ejemplo, el nombre del complemento es "CustomPSSnapInTest".
Agregue una propiedad pública para el proveedor del complemento (obligatorio).
En este ejemplo, el proveedor es "Microsoft".
Agregue una propiedad pública para el recurso de proveedor del complemento (opcional).
En este ejemplo, el recurso del proveedor es "CustomPSSnapInTest,Microsoft".
Agregue una propiedad pública para la descripción del complemento (obligatorio).
En este ejemplo, la descripción es: "Este es un complemento personalizado de Windows PowerShell que incluye los cmdlets
Test-HelloWorldyTest-CustomSnapinTest".Agregue una propiedad pública para el recurso de descripción del complemento (opcional).
En este ejemplo, el recurso del proveedor es:
CustomPSSnapInTest, este es un complemento personalizado de Windows PowerShell que incluye los cmdlets Test-HelloWorld y Test-CustomSnapinTest".
Especifique los cmdlets que pertenecen al complemento personalizado (opcional) mediante la clase System.Management.Automation.Runspaces.Cmdletconfigurationentry. La información agregada aquí incluye el nombre del cmdlet, su tipo .NET y el nombre del archivo de Ayuda del cmdlet (el formato del nombre del archivo de Ayuda del cmdlet debe ser
name.dll-help.xml).Este ejemplo agrega los cmdlets Test-HelloWorld y TestCustomSnapinTest.
Especifique los proveedores que pertenecen al complemento personalizado (opcional).
Este ejemplo no especifica ningún proveedor.
Especifique los tipos que pertenecen al complemento personalizado (opcional).
Este ejemplo no especifica ningún tipo.
Especifique los formatos que pertenecen al complemento personalizado (opcional).
Este ejemplo no especifica ningún formato.
Ejemplo
Este ejemplo muestra cómo escribir un complemento personalizado de Windows PowerShell que se puede usar para registrar los cmdlets Test-HelloWorld y Test-CustomSnapinTest. Tenga en cuenta que en este ejemplo, el ensamblado completo podría contener otros cmdlets y proveedores que este complemento no registraría.
[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;
}
}
}
Para obtener más información sobre el registro de complementos, consulte Cómo registrar cmdlets, proveedores y aplicaciones host en la Guía del programador de Windows PowerShell.
Ver también
Cómo registrar cmdlets, proveedores y aplicaciones host
SDK de shell de Windows PowerShell