Escrevendo um snap-in personalizado do Windows PowerShell
Este exemplo mostra como escrever um snap-in do Windows PowerShell que registra cmdlets específicos.
Com esse tipo de snap-in, você especifica quais cmdlets, provedores, tipos ou formatos devem ser registrados. Para obter mais informações sobre como escrever um snap-in que registra todos os cmdlets e provedores em um assembly, consulte Escrevendo um snap-in do Windows PowerShell.
Para escrever um snap-in do Windows PowerShell que registre cmdlets específicos.
Adicione o atributo RunInstallerAttribute.
Crie uma classe pública que deriva da classe System.Management.Automation.CustomPSSnapIn.
Neste exemplo, o nome da classe é "CustomPSSnapinTest".
Adicione uma propriedade pública para o nome do snap-in (obrigatório). Ao nomear snap-ins, não use nenhum dos seguintes caracteres:
#
,.
,,
,(
,)
,{
,}
,[
,]
,&
,-
,/
,\
,$
,;
,:
,"
,'
,<
,>
,|
,?
,@
,`
,*
Neste exemplo, o nome do snap-in é "CustomPSSnapInTest".
Adicione uma propriedade pública para o fornecedor do snap-in (obrigatório).
Neste exemplo, o fornecedor é "Microsoft".
Adicione uma propriedade pública para o recurso de fornecedor do snap-in (opcional).
Neste exemplo, o recurso do fornecedor é "CustomPSSnapInTest,Microsoft".
Adicione uma propriedade pública para a descrição do snap-in (obrigatório).
Neste exemplo, a descrição é: "Este é um snap-in personalizado do Windows PowerShell que inclui os cmdlets
Test-HelloWorld
eTest-CustomSnapinTest
".Adicione uma propriedade pública para o recurso de descrição do snap-in (opcional).
Neste exemplo, o recurso do fornecedor é:
CustomPSSnapInTest, Este é um snap-in personalizado do Windows PowerShell que inclui os cmdlets Test-HelloWorld e Test-CustomSnapinTest".
Especifique os cmdlets que pertencem ao snap-in personalizado (opcional) usando a classe System.Management.Automation.Runspaces.CmdletConfigurationEntry. As informações adicionadas aqui incluem o nome do cmdlet, seu tipo .NET e o nome do arquivo de Ajuda do cmdlet (o formato do nome do arquivo de Ajuda do cmdlet deve ser
name.dll-help.xml
).Este exemplo adiciona os cmdlets Test-HelloWorld e TestCustomSnapinTest.
Especifique os provedores que pertencem ao snap-in personalizado (opcional).
Este exemplo não especifica nenhum provedor.
Especifique os tipos que pertencem ao snap-in personalizado (opcional).
Este exemplo não especifica nenhum tipo.
Especifique os formatos que pertencem ao snap-in personalizado (opcional).
Este exemplo não especifica nenhum formato.
Exemplo
Este exemplo mostra como escrever um snap-in personalizado do Windows PowerShell que pode ser usado para registrar os cmdlets Test-HelloWorld
e Test-CustomSnapinTest
. Lembre-se de que, neste exemplo, o assembly completo pode conter outros cmdlets e provedores que não seriam registrados por esse snap-in.
[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 obter mais informações sobre como registrar snap-ins, consulte Como registrar cmdlets, provedores e aplicativos host no Guia do programador do Windows PowerShell.