Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
This sample shows how to use the System.Management.Automation.PowerShell class to run the Get-Process cmdlet synchronously. The Get-Process cmdlet returns System.Diagnostics.Process objects for each process running on the local computer. The values of the System.Diagnostics.Process.ProcessName* and System.Diagnostics.Process.HandleCount* properties are then extracted from the returned objects and displayed in a console window.
Requirements
This sample requires Windows PowerShell 2.0.
Demonstrates
Creating a System.Management.Automation.PowerShell object to run a command.
Adding a command to the pipeline of the System.Management.Automation.PowerShell object.
Running the command synchronously.
Using System.Management.Automation.PSObject objects to extract properties from the objects returned by the command.
Example
This sample runs the Get-Process cmdlet synchronously in the default runspace provided by Windows PowerShell.
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Management.Automation;
using PowerShell = System.Management.Automation.PowerShell;
/// <summary>
/// This class contains the Main entry point for this host application.
/// </summary>
internal class Runspace01
{
/// <summary>
/// This sample uses the PowerShell class to execute
/// the Get-Process cmdlet synchronously. The name and
/// handlecount are then extracted from the PSObjects
/// returned and displayed.
/// </summary>
/// <param name="args">Parameter not used.</param>
/// <remarks>
/// This sample demonstrates the following:
/// 1. Creating a PowerShell object to run a command.
/// 2. Adding a command to the pipeline of the PowerShell object.
/// 3. Running the command synchronously.
/// 4. Using PSObject objects to extract properties from the objects
/// returned by the command.
/// </remarks>
private static void Main(string[] args)
{
// Create a PowerShell object. Creating this object takes care of
// building all of the other data structures needed to run the command.
using (PowerShell powershell = PowerShell.Create().AddCommand("Get-Process"))
{
Console.WriteLine("Process HandleCount");
Console.WriteLine("--------------------------------");
// Invoke the command synchronously and display the
// ProcessName and HandleCount properties of the
// objects that are returned.
foreach (PSObject result in powershell.Invoke())
{
Console.WriteLine(
"{0,-20} {1}",
result.Members["ProcessName"].Value,
result.Members["HandleCount"].Value);
}
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}