Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det här exemplet visar hur du skapar ett standardtillstånd för den inledande sessionen, hur du lägger till en cmdlet i System.Management.Automation.Runspaces.InitialSessionState, hur du skapar en runspace som använder det inledande sessionstillståndet och hur du kör kommandot med hjälp av ett System.Management.Automation.PowerShell-objekt.
Krav
Det här exemplet kräver Windows PowerShell 2.0.
Demonstrerar
Det här exemplet visar följande.
Skapa ett System.Management.Automation.Runspaces.InitialSessionState-objekt.
Lägga till en cmdlet (definierad av värdprogrammet) i objektet System.Management.Automation.Runspaces.InitialSessionState.
Skapa ett System.Management.Automation.Runspaces.Runspace objekt som använder objektet.
Skapa ett System.Management.Automation.PowerShell objekt som använder objektet System.Management.Automation.Runspaces.Runspace.
Lägga till kommandot i pipelinen för objektet System.Management.Automation.PowerShell.
Extrahera egenskaper från System.Management.Automation.PSObject objekt som returneras av kommandot.
Exempel
Det här exemplet skapar ett runspace som använder ett System.Management.Automation.Runspaces.InitialSessionState-objekt för att definiera de element som är tillgängliga när runspace öppnas. I det här exemplet läggs cmdleten Get-Proc (definieras av värdprogrammet) till i det inledande sessionstillståndet, och cmdleten körs synkront med hjälp av ett System.Management.Automation.PowerShell-objekt.
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using PowerShell = System.Management.Automation.PowerShell;
#region GetProcCommand
/// <summary>
/// Class that implements the GetProcCommand.
/// </summary>
[Cmdlet(VerbsCommon.Get, "Proc")]
public class GetProcCommand : Cmdlet
{
#region Cmdlet Overrides
/// <summary>
/// For each of the requested process names, retrieve and write
/// the associated processes.
/// </summary>
protected override void ProcessRecord()
{
// Get the current processes.
Process[] processes = Process.GetProcesses();
// Write the processes to the pipeline making them available
// to the next cmdlet. The second argument (true) tells the
// system to enumerate the array, and send one process object
// at a time to the pipeline.
WriteObject(processes, true);
}
#endregion Overrides
} // End GetProcCommand class.
#endregion GetProcCommand
/// <summary>
/// This class contains the Main entry point for this host application.
/// </summary>
internal class Runspace10
{
/// <summary>
/// This sample shows how to create a default initial session state, how to add
/// add a cmdlet to the InitialSessionState object, and then how to create
/// a Runspace object.
/// </summary>
/// <param name="args">Parameter is not used.</param>
/// This sample demonstrates:
/// 1. Creating an InitialSessionState object.
/// 2. Adding a cmdlet to the InitialSessionState object.
/// 3. Creating a runspace that uses the InitialSessionState object.
/// 4. Creating a PowerShell object that uses the Runspace object.
/// 5. Running the added command synchronously.
/// 6. Working with PSObject objects to extract properties
/// from the objects returned by the pipeline.
private static void Main(string[] args)
{
// Create a default InitialSessionState object. The default
// InitialSessionState object contains all the elements provided
// by Windows PowerShell.
InitialSessionState iss = InitialSessionState.CreateDefault();
// Add the Get-Proc cmdlet to the InitialSessionState object.
SessionStateCmdletEntry ssce = new SessionStateCmdletEntry("Get-Proc", typeof(GetProcCommand), null);
iss.Commands.Add(ssce);
// Create a Runspace object that uses the InitialSessionState object.
// Notice that no PSHost object is specified, so the default host is used.
// See the Hosting samples for information on creating your own custom host.
using (Runspace myRunSpace = RunspaceFactory.CreateRunspace(iss))
{
myRunSpace.Open();
using (PowerShell powershell = PowerShell.Create())
{
powershell.Runspace = myRunSpace;
// Add the Get-Proc cmdlet to the pipeline of the PowerShell object.
powershell.AddCommand("Get-Proc");
Collection<PSObject> results = powershell.Invoke();
Console.WriteLine("Process HandleCount");
Console.WriteLine("--------------------------------");
// Display the output of the pipeline.
foreach (PSObject result in results)
{
Console.WriteLine(
"{0,-20} {1}",
result.Members["ProcessName"].Value,
result.Members["HandleCount"].Value);
}
}
// Close the runspace to release resources.
myRunSpace.Close();
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}