Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Beispiel wird gezeigt, wie Sie einem System.Management.Automation.Runspaces.InitialSessionState Objekt ein Modul hinzufügen, sodass das Modul beim Öffnen des Runspace geladen wird. Das Modul stellt ein Get-Proc-Cmdlet (definiert durch das GetProcessSample02 Sample) bereit, das synchron mithilfe eines System.Management.Automation.PowerShell--Objekts ausgeführt wird.
Anforderungen
In diesem Beispiel ist Windows PowerShell 2.0 erforderlich.
Veranschaulichung
In diesem Beispiel wird Folgendes veranschaulicht.
Erstellen eines System.Management.Automation.Runspaces.InitialSessionState-Objekts.
Hinzufügen des Moduls zum System.Management.Automation.Runspaces.InitialSessionState-Objekt.
Erstellen eines System.Management.Automation.Runspaces.Runspace Objekt, das das System.Management.Automation.Runspaces.InitialSessionState-Objekt verwendet.
Erstellen eines System.Management.Automation.PowerShell--Objekts, das den Runspace verwendet.
Hinzufügen des Get-Proc-Cmdlets des Moduls zur Pipeline des System.Management.Automation.PowerShell--Objekts.
Synchrones Ausführen des Befehls.
Extrahieren von Eigenschaften aus dem System.Management.Automation.PSObject objekte, die vom Befehl zurückgegeben werden.
Beispiel
In diesem Beispiel wird ein Runspace erstellt, der ein System.Management.Automation.Runspaces.InitialSessionState-Objekt verwendet, um die Beim Öffnen des Runspace verfügbaren Elemente zu definieren. In diesem Beispiel wird dem anfänglichen Sitzungszustand ein Modul hinzugefügt, das ein Get-Proc-Cmdlet definiert.
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();
}
}
}