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 agregar un complemento a un objeto System.Management.Automation.Runspaces.InitialSessionState para que el cmdlet del complemento esté disponible cuando se abra el espacio de ejecución. El complemento proporciona un cmdlet Get-Proc (definido por el GetProcessSample01 Sample) que se ejecuta de forma sincrónica mediante un objeto System.Management.Automation.PowerShell.
Requisitos
Este ejemplo requiere Windows PowerShell 2.0.
Demostraciones
En este ejemplo se muestra lo siguiente.
Crear un objeto System.Management.Automation.Runspaces.InitialSessionState.
Agregar el complemento al objeto System.Management.Automation.Runspaces.InitialSessionState.
Crear un objeto System.Management.Automation.Runspaces.Runspace que usa el objeto System.Management.Automation.Runspaces.InitialSessionState.
Crear un objeto System.Management.Automation.PowerShell que usa el espacio de ejecución.
Agregar el cmdlet Get-Proc del complemento a la canalización del objeto System.Management.Automation.PowerShell.
Ejecutar el comando de forma sincrónica.
Extraer propiedades de los objetos System.Management.Automation.PSObject devueltos por el comando .
Ejemplo
En este ejemplo se crea un espacio de ejecución que usa un objeto System.Management.Automation.Runspaces.InitialSessionState para definir los elementos que están disponibles cuando se abre el espacio de ejecución. En este ejemplo, se agrega un complemento que define un cmdlet Get-Proc al estado de sesión inicial.
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 Runspace05
{
/// <summary>
/// This sample shows how to define an initial session state that is
/// used when creating a runspace. The sample invokes a command from
/// a Windows PowerShell snap-in that is present in the console file.
/// </summary>
/// <param name="args">The parameter is not used.</param>
/// <remarks>
/// This sample assumes that user has copied the GetProcessSample01.dll
/// that is produced by the GetProcessSample01 sample to the current
/// directory.
/// This sample demonstrates the following:
/// 1. Creating a default initial session state.
/// 2. Adding a snap-in to the initial session state.
/// 3. Creating a runspace that uses the initial session state.
/// 4. Creating a PowerShell object that uses the runspace.
/// 5. Adding the snap-in's Get-Proc cmdlet to the PowerShell object.
/// 6. Using PSObject objects to extract and display properties from
/// the objects returned by the cmdlet.
/// </remarks>
private static void Main(string[] args)
{
// Create the default initial session state. The default initial
// session state contains all the elements provided by Windows
// PowerShell.
InitialSessionState iss = InitialSessionState.CreateDefault();
PSSnapInException warning;
iss.ImportPSSnapIn("GetProcPSSnapIn01", out warning);
// Create a runspace. 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(iss))
{
myRunSpace.Open();
// Create a PowerShell object.
using (PowerShell powershell = PowerShell.Create())
{
// Add the snap-in cmdlet and specify the runspace.
powershell.AddCommand("GetProcPSSnapIn01\\Get-Proc");
powershell.Runspace = myRunSpace;
// Run the cmdlet synchronously.
Collection<PSObject> results = powershell.Invoke();
Console.WriteLine("Process HandleCount");
Console.WriteLine("--------------------------------");
// Display the results.
foreach (PSObject result in results)
{
Console.WriteLine(
"{0,-20} {1}",
result.Members["ProcessName"].Value,
result.Members["HandleCount"].Value);
}
}
// Close the runspace to release any resources.
myRunSpace.Close();
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}