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 and Sort-Object cmdlets synchronously. The Get-Process cmdlet returns System.Diagnostics.Process objects for each process running on the local computer, and the Sort-Object sorts the objects based on their System.Diagnostics.Process.Id* property. The results of these commands is displayed by using a System.Windows.Forms.DataGridView control.
Requirements
This sample requires Windows PowerShell 2.0.
Demonstrates
This sample demonstrates the following.
Creating a System.Management.Automation.PowerShell object to run commands.
Adding commands to the pipeline of System.Management.Automation.PowerShell object.
Running the commands synchronously.
Using a System.Windows.Forms.DataGridView control to display the output of the commands in a Windows Forms application.
Example
This sample runs the Get-Process and Sort-Object cmdlets synchronously in the default runspace provided by Windows PowerShell. The output is displayed in a form using a System.Windows.Forms.DataGridView control.
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Collections;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Windows.Forms;
using PowerShell = System.Management.Automation.PowerShell;
/// <summary>
/// This class contains the Main entry point for this host application.
/// </summary>
internal class Runspace02
{
/// <summary>
/// This method creates the form where the output is displayed.
/// </summary>
private static void CreateForm()
{
Form form = new Form();
DataGridView grid = new DataGridView();
form.Controls.Add(grid);
grid.Dock = DockStyle.Fill;
// 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())
{
powershell.AddCommand("Get-Process").AddCommand("Sort-Object").AddArgument("ID");
if (Runspace.DefaultRunspace == null)
{
Runspace.DefaultRunspace = powershell.Runspace;
}
Collection<PSObject> results = powershell.Invoke();
// The generic collection needs to be re-wrapped in an ArrayList
// for data-binding to work.
ArrayList objects = new ArrayList();
objects.AddRange(results);
// The DataGridView will use the PSObjectTypeDescriptor type
// to retrieve the properties.
grid.DataSource = objects;
}
form.ShowDialog();
}
/// <summary>
/// This sample uses a PowerShell object to run the Get-Process
/// and Sort-Object cmdlets synchronously. Windows Forms and
/// data binding are then used to display the results in a
/// DataGridView control.
/// </summary>
/// <param name="args">The parameter is not used.</param>
/// <remarks>
/// This sample demonstrates the following:
/// 1. Creating a PowerShell object.
/// 2. Adding commands and arguments to the pipeline of
/// the PowerShell object.
/// 3. Running the commands synchronously.
/// 4. Using a DataGridView control to display the output
/// of the commands in a Windows Forms application.
/// </remarks>
private static void Main(string[] args)
{
Runspace02.CreateForm();
}
}
}