Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ez a példa bemutatja, hogyan hívhat meg egy olyan bináris parancsmagot, amely közvetlenül egy másik bináris parancsmagból származik [System.Management.Automation.Cmdlet], amely lehetővé teszi a meghívott parancsmag funkcióinak hozzáadását a fejlesztendő bináris parancsmaghoz. Ebben a példában a rendszer meghívja a Get-Process parancsmagot a helyi számítógépen futó folyamatok lekéréséhez. A Get-Process parancsmag hívása egyenértékű az alábbi paranccsal. Ez a parancs lekéri az összes olyan folyamatot, amelynek a neve "a" és "t" karakterekkel kezdődik.
Get-Process -Name [a-t]*
Fontos
Csak azokat a parancsmagokat hívhatja meg, amelyek közvetlenül a System.Management.Automation.Cmdlet osztályból származnak. Nem hívhat meg olyan parancsmagot, amely a System.Management.Automation.PSCmdlet osztályból származik. Példa: PSCmdlet meghívása PSCmdlet-.
Parancsmag meghívása parancsmagból
Győződjön meg arról, hogy a meghívni kívánt parancsmagot meghatározó szerelvényre hivatkozik, és hozzáadja a megfelelő
usingutasítást. Ebben a példában a következő névterek lesznek hozzáadva.using System.Diagnostics; using System.Management.Automation; // PowerShell assembly. using Microsoft.PowerShell.Commands; // PowerShell cmdlets assembly you want to call.A parancsmag bemeneti feldolgozási módjában hozzon létre egy új példányt a meghívni kívánt parancsmagból. Ebben a példában egy Microsoft.PowerShell.Commands.GetProcessCommand típusú objektum jön létre a parancsmag meghívásakor használt argumentumokat tartalmazó sztringgel együtt.
GetProcessCommand gp = new GetProcessCommand(); gp.Name = new string[] { "[a-t]*" };Hívja meg a System.Management.Automation.Cmdlet.Invoke* metódust a
Get-Processparancsmag meghívásához.foreach (Process p in gp.Invoke<Process>()) { Console.WriteLine(p.ToString()); } }
Példa
Ebben a példában a rendszer meghívja a Get-Process parancsmagot a System.Management.Automation.Cmdlet.BeginProcessing parancsmag metódusából.
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 + "!");
}
}
}