Jak wywołać polecenie cmdlet z poziomu polecenia cmdlet
W tym przykładzie pokazano, jak wywołać polecenie cmdlet z poziomu innego polecenia cmdlet, co umożliwia dodanie funkcji wywoływanego polecenia cmdlet do programowego polecenia cmdlet. W tym przykładzie polecenie cmdlet jest wywoływane w celu uzyskania procesów Get-Process
uruchomionych na komputerze lokalnym. Wywołanie polecenia Get-Process
cmdlet jest równoważne z następującym poleceniem. To polecenie pobiera wszystkie procesy, których nazwy zaczynają się od znaków od "a" do "t".
Get-Process -name [a-t]
Ważne
Można wywoływać tylko te polecenia cmdlet, które pochodzą bezpośrednio z klasy System.Management.Automation.Cmdlet. Nie można wywołać polecenia cmdlet, które pochodzi od klasy System.Management.Automation.PSCmdlet.
Aby wywołać polecenie cmdlet z poziomu polecenia cmdlet
Upewnij się, że zestaw definiujący polecenie cmdlet do wywołania jest przywoływał i że dodano
using
odpowiednią instrukcje. W tym przykładzie dodawane są następujące przestrzenie nazw.using System.Diagnostics; using System.Management.Automation; // Windows PowerShell assembly. using Microsoft.PowerShell.Commands; // Windows PowerShell assembly.
W metodzie przetwarzania danych wejściowych polecenia cmdlet utwórz nowe wystąpienie polecenia cmdlet do wywołania. W tym przykładzie tworzony jest obiekt typu Microsoft.PowerShell.Commands.Getprocesscommand wraz z ciągiem zawierającym argumenty używane podczas wywoływania polecenia cmdlet.
GetProcessCommand gp = new GetProcessCommand(); gp.Name = new string[] { "[a-t]*" };
Wywołaj metodę System.Management.Automation.Cmdlet.Invoke*, aby wywołać
Get-Process
polecenie cmdlet .foreach (Process p in gp.Invoke<Process>()) { Console.WriteLine(p.ToString()); } }
Przykład
W tym przykładzie polecenie cmdlet jest wywoływane z metody Get-Process
System.Management.Automation.Cmdlet.BeginProcessing polecenia cmdlet.
using System;
using System.Diagnostics;
using System.Management.Automation; // Windows PowerShell assembly.
using Microsoft.PowerShell.Commands; // Windows PowerShell assembly.
namespace SendGreeting
{
// Declare the class as a cmdlet and specify an
// appropriate verb and noun for the cmdlet name.
[Cmdlet(VerbsCommunications.Send, "GreetingInvoke")]
public class SendGreetingInvokeCommand : Cmdlet
{
// Declare the parameters for the cmdlet.
[Parameter(Mandatory = true)]
public string Name
{
get { return name; }
set { name = value; }
}
private string name;
// Override the BeginProcessing method to invoke
// the Get-Process cmdlet.
protected override void BeginProcessing()
{
GetProcessCommand gp = new GetProcessCommand();
gp.Name = new string[] { "[a-t]*" };
foreach (Process p in gp.Invoke<Process>())
{
Console.WriteLine(p.ToString());
}
}
// Override the ProcessRecord method to process
// the supplied user name and write out a
// greeting to the user by calling the WriteObject
// method.
protected override void ProcessRecord()
{
WriteObject("Hello " + name + "!");
}
}
}
Zobacz też
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