Een aangepaste Windows PowerShell-module schrijven
In dit voorbeeld ziet u hoe u een Windows PowerShell-module schrijft die specifieke cmdlets registreert.
Met dit type module geeft u op welke cmdlets, providers, typen of indelingen moeten worden geregistreerd. Zie Writing a Windows PowerShell Snap-in(Een module schrijven) voor meer informatie over het schrijven van een module die alle cmdlets en providers in een assembly registreert.
Als u een Windows PowerShell-module die specifieke cmdlets registreert.
Voeg het kenmerk RunInstallerAttribute toe.
Maak een openbare klasse die is afgeleid van de klasse System.Management.Automation.Custompssnapin.
In dit voorbeeld is de klassenaam CustomPSSnapinTest.
Voeg een openbare eigenschap toe voor de naam van de module (vereist). Gebruik bij het benoemen van module-ins geen van de volgende tekens:
#, , , , ,.,(){,}[]&-/\$;:"'<>|?@`````*In dit voorbeeld is de naam van de module CustomPSSnapInTest.
Voeg een openbare eigenschap toe voor de leverancier van de module (vereist).
In dit voorbeeld is de leverancier 'Microsoft'.
Voeg een openbare eigenschap toe voor de leverancierresource van de module (optioneel).
In dit voorbeeld is de resource van de leverancier CustomPSSnapInTest, Microsoft.
Voeg een openbare eigenschap toe voor de beschrijving van de module (vereist).
In dit voorbeeld is de beschrijving: "Dit is een aangepaste Windows PowerShell-module die de
Test-HelloWorldTest-CustomSnapinTestcmdlets en bevat".Voeg een openbare eigenschap toe voor de beschrijvingsresource van de module (optioneel).
In dit voorbeeld is de resource van de leverancier:
CustomPSSnapInTest: dit is een aangepaste Windows PowerShell-module die de Test-HelloWorld en Test-CustomSnapinTest cmdlets bevat.
Geef de cmdlets op die deel uitmaken van de aangepaste module (optioneel) met behulp van de klasse System.Management.Automation.Runspaces.Cmdletconfigurationentry. De informatie die hier wordt toegevoegd, bevat de naam van de cmdlet, het .NET-type en de naam van het Help-bestand van de cmdlet (de indeling van de Help-bestandsnaam van de cmdlet moet
name.dll-help.xmlzijn).In dit voorbeeld worden de cmdlets Test-HelloWorld en TestCustomSnapinTest toegevoegd.
Geef de providers op die deel uitmaken van de aangepaste module (optioneel).
In dit voorbeeld worden geen providers opgegeven.
Geef de typen op die deel uitmaken van de aangepaste module (optioneel).
In dit voorbeeld worden geen typen opgegeven.
Geef de indelingen op die deel uitmaken van de aangepaste module (optioneel).
In dit voorbeeld worden geen indelingen opgegeven.
Voorbeeld
In dit voorbeeld ziet u hoe u een custom Windows PowerShell-module schrijft die kan worden gebruikt om de Test-HelloWorld Test-CustomSnapinTest cmdlets en te registreren. In dit voorbeeld kan de volledige assembly andere cmdlets en providers bevatten die niet door deze module worden geregistreerd.
[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;
}
}
}
Zie How to Register Cmdlets, Providers, and Host Applications (Cmdlets, providers en hosttoepassingen registreren) in de Windows PowerShell Programmer's Guide (Handleiding voor programmeurs van Windows PowerShell) voor meer informatie over het registreren van modulen.
Zie ook
Feedback
Feedback verzenden en weergeven voor