Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym przykładzie pokazano, jak wywołać binarne polecenie cmdlet pochodzące z [System.Management.Automation.Cmdlet] bezpośrednio z poziomu innego binarnego polecenia cmdlet, które umożliwia dodanie funkcji wywoływanego polecenia cmdlet do opracowywanego polecenia cmdlet binarnego. W tym przykładzie polecenie cmdlet Get-Process jest wywoływane w celu pobrania procesów uruchomionych na komputerze lokalnym. Wywołanie polecenia cmdlet Get-Process jest równoważne następującemu poleceniu. To polecenie pobiera wszystkie procesy, których nazwy zaczynają się od znaków "a" do "t".
Get-Process -Name [a-t]*
Ważne
Można wywołać tylko te polecenia cmdlet, które pochodzą bezpośrednio z klasy System.Management.Automation.Cmdlet. Nie można wywołać polecenia cmdlet pochodzącego z klasy System.Management.Automation.PSCmdlet. Aby zapoznać się z przykładem, zobacz How to invoke a PSCmdlet from within a PSCmdlet.
Aby wywołać polecenie cmdlet z poziomu polecenia cmdlet
Upewnij się, że zestaw, który definiuje wywoływane polecenie cmdlet, jest przywoływany i że dodano odpowiednią instrukcję
using. W tym przykładzie dodawane są następujące przestrzenie nazw.using System.Diagnostics; using System.Management.Automation; // PowerShell assembly. using Microsoft.PowerShell.Commands; // PowerShell cmdlets assembly you want to call.W metodzie przetwarzania wejściowego polecenia cmdlet utwórz nowe wystąpienie polecenia cmdlet do wywołania. W tym przykładzie obiekt typu Microsoft.PowerShell.Commands.GetProcessCommand jest tworzony wraz z ciągiem zawierającym argumenty używane podczas wywoływanego polecenia cmdlet.
GetProcessCommand gp = new GetProcessCommand(); gp.Name = new string[] { "[a-t]*" };Wywołaj metodę System.Management.Automation.Cmdlet.Invoke*, aby wywołać polecenie cmdlet
Get-Process.foreach (Process p in gp.Invoke<Process>()) { Console.WriteLine(p.ToString()); } }
Przykład
W tym przykładzie polecenie cmdlet Get-Process jest wywoływane z poziomu System.Management.Automation.Cmdlet.BeginProcessing metody polecenia cmdlet.
using System;
using System.Diagnostics;
using System.Management.Automation; // PowerShell assembly.
using Microsoft.PowerShell.Commands; // PowerShell cmdlets assembly you want to call.
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; set; }
// 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>())
{
WriteVerbose(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 + "!");
}
}
}