Parancsmagok meghívása parancsmagokon belül
Ez a példa bemutatja, hogyan hívhat meg egy parancsmagot egy másik parancsmagból, amely lehetővé teszi a meghívott parancsmag funkcióinak hozzáadását az Ön által fejlesztett parancsmaghoz. Ebben a példában a parancsmagot a helyi számítógépen futó folyamatok Get-Process
lekérte. A parancsmag Get-Process
hívása az alábbi paranccsal egyenértékű. Ez a parancs lekéri az összes olyan folyamatot, amelynek a neve az "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. A System.Management.Automation.PSCmdlet osztályból származtatott parancsmagok nem hívhatóak meg.
Parancsmag meghívása egy parancsmagból
Győződjön meg arról, hogy a rendszer hivatkozik a meghívni szükséges parancsmagot meghatározó szerelvényre, és hogy hozzáadja a megfelelő
using
utasítást. Ebben a példában a következő névtereket adhatja hozzá.using System.Diagnostics; using System.Management.Automation; // Windows PowerShell assembly. using Microsoft.PowerShell.Commands; // Windows PowerShell assembly.
A parancsmag bemeneti feldolgozási metódusában hozza létre a meghívni szükséges parancsmag egy új példányát. 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ó sztring mellett.
GetProcessCommand gp = new GetProcessCommand(); gp.Name = new string[] { "[a-t]*" };
A parancsmag meghívásához hívja meg a System.Management.Automation.Cmdlet.Invoke*
Get-Process
metódust.foreach (Process p in gp.Invoke<Process>()) { Console.WriteLine(p.ToString()); } }
Példa
Ebben a példában a parancsmagot egy parancsmag Get-Process
System.Management.Automation.Cmdlet.BeginProcessing metódusában hívjuk meg.
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 + "!");
}
}
}
Lásd még:
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: