Megosztás a következőn keresztül:


Parancsmag meghívása parancsmagból

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

  1. 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ő using utasí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.
    
  2. 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]*" };
    
  3. Hívja meg a System.Management.Automation.Cmdlet.Invoke* metódust a Get-Process parancsmag 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 + "!");
    }
  }
}

Lásd még:

Windows PowerShell-parancsmag írása