Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo esempio illustra come aggiungere un modulo a un oggetto System.Management.Automation.Runspaces.InitialSessionState in modo che il modulo venga caricato all'apertura dello spazio di esecuzione. Il modulo fornisce un cmdlet Get-Proc (definito dal GetProcessSample02 Sample) che viene eseguito in modo sincrono usando un oggetto System.Management.Automation.PowerShell.
Requisiti
Questo esempio richiede Windows PowerShell 2.0.
Dimostra
In questo esempio viene illustrato quanto segue.
Creazione di un oggetto System.Management.Automation.Runspaces.InitialSessionState.
Aggiunta del modulo all'oggetto System.Management.Automation.Runspaces.InitialSessionState.
Creazione di un oggetto System.Management.Automation.Runspaces.Runspace che utilizza l'oggetto System.Management.Automation.Runspaces.InitialSessionState.
Creazione di un oggetto System.Management.Automation.PowerShell che usa lo spazio di esecuzione.
Aggiunta del cmdlet Get-Proc del modulo alla pipeline dell'oggetto System.Management.Automation.PowerShell.
Esecuzione del comando in modo sincrono.
Estrazione di proprietà dagli oggetti System.Management.Automation.PSObject restituiti dal comando.
Esempio
Questo esempio crea uno spazio di esecuzione che usa un oggetto System.Management.Automation.Runspaces.InitialSessionState per definire gli elementi disponibili all'apertura dello spazio di esecuzione. In questo esempio viene aggiunto un modulo che definisce un cmdlet Get-Proc allo stato iniziale della sessione.
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 Runspace06
{
/// <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 binary module that is loaded by the initial session state.
/// </summary>
/// <param name="args">Parameter not used.</param>
/// <remarks>
/// This sample assumes that user has copied the GetProcessSample02.dll
/// that is produced by the GetProcessSample02 sample to the current
/// directory.
/// This sample demonstrates the following:
/// 1. Creating a default initial session state.
/// 2. Adding a module 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 module's Get-Proc cmdlet to the PowerShell object.
/// 6. Running the command synchronously.
/// 7. 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 and add the module.
InitialSessionState iss = InitialSessionState.CreateDefault();
iss.ImportPSModule(new string[] { @".\GetProcessSample02.dll" });
// 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 cmdlet and specify the runspace.
powershell.AddCommand(@"GetProcessSample02\Get-Proc");
powershell.Runspace = myRunSpace;
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();
}
}
}