Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este ejemplo se muestra cómo usar la clase de System.Management.Automation.PowerShell para ejecutar el Get-Process y cmdlets sort-Object sincrónicamente. El cmdlet get-process devuelve objetos System.Diagnostics.Process para cada proceso que se ejecuta en el equipo local y el Sort-Object ordena los objetos en función de su propiedad System.Diagnostics.Process.Id*. Los resultados de estos comandos se muestran mediante un control System.Windows.Forms.DataGridView.
Requisitos
Este ejemplo requiere Windows PowerShell 2.0.
Demostraciones
En este ejemplo se muestra lo siguiente.
Crear un objeto System.Management.Automation.PowerShell para ejecutar comandos.
Agregar comandos a la canalización de objeto System.Management.Automation.PowerShell.
Ejecutar los comandos de forma sincrónica.
Usar un control System.Windows.Forms.DataGridView para mostrar la salida de los comandos en una aplicación de Windows Forms.
Ejemplo
En este ejemplo se ejecutan los cmdlets Get-Process y Sort-Object sincrónicamente en el espacio de ejecución predeterminado proporcionado por Windows PowerShell. La salida se muestra en un formulario mediante un control System.Windows.Forms.DataGridView.
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();
}
}
}