Pisanie niestandardowej przystawki programu Windows PowerShell
W tym przykładzie pokazano, jak napisać Windows PowerShell, która rejestruje określone polecenia cmdlet.
W przypadku tego typu przystawki można określić, które polecenia cmdlet, dostawcy, typy lub formaty mają być rejestrowane. Aby uzyskać więcej informacji na temat pisania przystawki, która rejestruje wszystkie polecenia cmdlet i dostawców w zestawie, zobacz Zapisywanie przystawki Windows PowerShell przystawki .
Aby napisać Windows PowerShell przystawki, która rejestruje określone polecenia cmdlet.
Dodaj atrybut RunInstallerAttribute.
Utwórz klasę publiczną pochodzącą z klasy System.Management.Automation.Custompssnapin.
W tym przykładzie nazwa klasy to "CustomPSSnapinTest".
Dodaj właściwość publiczną dla nazwy przystawki (wymagane). Podczas nazewnictwa przyciągań nie używaj żadnego z następujących znaków:
#
, , , , , , , , ,.
,,
,(
)
{
}
[
]
&
-
/
\
$
;
,:
"
'
<
>
|
?
@
`
,*
W tym przykładzie nazwa przystawki to "CustomPSSnapInTest".
Dodaj właściwość publiczną dla dostawcy przystawki (wymagane).
W tym przykładzie dostawca to "Microsoft".
Dodaj właściwość publiczną dla zasobu dostawcy przystawki (opcjonalnie).
W tym przykładzie zasób dostawcy to "CustomPSSnapInTest,Microsoft".
Dodaj właściwość publiczną dla opisu przystawki (wymagane).
W tym przykładzie opis to: "Jest to niestandardowa Windows PowerShell, która zawiera polecenia
Test-HelloWorld
Test-CustomSnapinTest
cmdlet i ".Dodaj właściwość publiczną dla zasobu opisu przystawki (opcjonalnie).
W tym przykładzie zasób dostawcy to:
CustomPSSnapInTest, jest to niestandardowa Windows PowerShell, która zawiera polecenia cmdlet Test-HelloWorld i Test-CustomSnapinTest".
Określ polecenia cmdlet należące do niestandardowej przystawki (opcjonalnie) przy użyciu klasy System.Management.Automation.Runspaces.Cmdletconfigurationentry. Informacje dodane w tym miejscu obejmują nazwę polecenia cmdlet, jego typ .NET i nazwę pliku pomocy polecenia cmdlet (format pliku pomocy polecenia cmdlet powinien mieć wartość
name.dll-help.xml
).W tym przykładzie dodano Test-HelloWorld cmdlet TestCustomSnapinTest.
Określ dostawców należących do przystawki niestandardowej (opcjonalnie).
W tym przykładzie nie określono żadnych dostawców.
Określ typy należące do niestandardowej przystawki (opcjonalnie).
W tym przykładzie nie określono żadnych typów.
Określ formaty należące do przystawki niestandardowej (opcjonalnie).
W tym przykładzie nie określono żadnych formatów.
Przykład
W tym przykładzie pokazano, jak napisać niestandardową Windows PowerShell przystawkę, która może służyć do rejestrowania Test-HelloWorld
polecenia Test-CustomSnapinTest
cmdlet i . Należy pamiętać, że w tym przykładzie kompletny zestaw może zawierać inne polecenia cmdlet i dostawców, którzy nie zostaną zarejestrowani przez tę przystawkę.
[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;
}
}
}
Aby uzyskać więcej informacji na temat rejestrowania przyciągnień, zobacz How to Register Cmdlets, Providers, and Host Applications (Jak rejestrować polecenia cmdlet, dostawców i aplikacje hosta) w przewodniku Windows PowerShell Programmer's Guide(Jak rejestrować polecenia cmdlet, dostawcy i aplikacje hosta) w przewodniku programisty programu Windows PowerShell.
Zobacz też
Jak rejestrować polecenia cmdlet, dostawców i aplikacje hosta
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla