RunSpace07 – kodexempel
Här är källkoden för Runspace07-exemplet som beskrivs i Skapa ett konsolprogram som lägger till kommandon i en pipeline.
Det här exempelprogrammet skapar ett runspace, skapar en pipeline, lägger till två kommandon i pipelinen och kör sedan pipelinen. Kommandona som läggs till i pipelinen är Get-Process
Measure-Object
cmdletarna och .
Anteckning
Du kan ladda ned C#-källfilen (runspace07.cs) med Microsoft Windows Software Development Kit för Windows Vista och Microsoft .NET Framework 3.0 Runtime Components. Anvisningar för nedladdning finns i Installera Windows PowerShell och Ladda ned Windows PowerShell SDK. De nedladdade källfilerna är tillgängliga i <PowerShell Samples> katalogen .
Kodexempel
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using PowerShell = System.Management.Automation.PowerShell;
/// <summary>
/// This class contains the Main entry point for this host application.
/// </summary>
internal class Runspace07
{
/// <summary>
/// This sample shows how to create a runspace and how to run
/// commands using a PowerShell object. It builds a pipeline
/// that runs the get-process cmdlet, which is piped to the measure-object
/// cmdlet to count the number of processes running on the system.
/// </summary>
/// <param name="args">Parameter is not used.</param>
/// <remarks>
/// This sample demonstrates the following:
/// 1. Creating a runspace using the RunspaceFactory class.
/// 2. Creating a PowerShell object
/// 3. Adding individual cmdlets to the PowerShell object.
/// 4. Running the cmdlets synchronously.
/// 5. Working with PSObject objects to extract properties
/// from the objects returned by the cmdlets.
/// </remarks>
private static void Main(string[] args)
{
Collection<PSObject> result; // Will hold the result
// of running the cmdlets.
// Create a runspace. We can not use the RunspaceInvoke class
// because we need to get at the underlying runspace to
// explicitly add the commands. Notice that no PSHost object is
// supplied to the CreateRunspace method so the default host is
// used. See the Host samples for more information on creating
// your own custom host.
using (Runspace myRunSpace = RunspaceFactory.CreateRunspace())
{
myRunSpace.Open();
// Create a PowerShell object and specify the runspace.
PowerShell powershell = PowerShell.Create();
powershell.Runspace = myRunSpace;
// Use the using statement so we dispose of the PowerShell object
// when we're done.
using (powershell)
{
// Add the get-process cmdlet to the PowerShell object. Notice
// we are specify the name of the cmdlet, not a script.
powershell.AddCommand("get-process");
// Add the measure-object cmdlet to count the number
// of objects being returned. Commands are always added to the end
// of the pipeline.
powershell.AddCommand("measure-object");
// Run the cmdlets synchronously and save the objects returned.
result = powershell.Invoke();
}
// Even after disposing of the pipeLine, we still need to set
// the powershell variable to null so that the garbage collector
// can clean it up.
powershell = null;
// Display the results of running the commands (checking that
// everything is ok first.
if (result == null || result.Count != 1)
{
throw new InvalidOperationException(
"pipeline.Invoke() returned the wrong number of objects");
}
PSMemberInfo count = result[0].Properties["Count"];
if (count == null)
{
throw new InvalidOperationException(
"The object returned doesn't have a 'count' property");
}
Console.WriteLine(
"Runspace07: The get-process cmdlet returned {0} objects",
count.Value);
// Close the runspace to release any resources.
myRunSpace.Close();
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för