Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Oto kod źródłowy przykładu Runspace07 opisany w temacie Tworzenie aplikacji konsolowej, która dodaje polecenia do potoku.
Ta przykładowa aplikacja tworzy przestrzeń uruchomieniową, tworzy potok, dodaje dwa polecenia do potoku, a następnie wykonuje potok. Dodane do potoku polecenia to cmdlety Get-Process
i Measure-Object
.
Uwaga / Notatka
Plik źródłowy języka C# (runspace07.cs) można pobrać przy użyciu zestawu Microsoft Windows Software Development Kit dla systemu Windows Vista i składników środowiska uruchomieniowego microsoft .NET Framework 3.0. Aby uzyskać instrukcje pobierania, zobacz How to Install Windows PowerShell (Jak zainstalować program Windows PowerShell) i Download the Windows PowerShell SDK (Pobieranie zestawu Windows PowerShell SDK). Pobrane pliki źródłowe są dostępne w katalogu <Przykłady programu PowerShell>.
Przykładowy kod
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 Runspace07
{
/// <summary>
/// This sample shows how to create a runspace and how to run
/// commands using a PowerShell object. It builds a pipeline
/// that runs the get-process cmdlet, which is piped to the measure-object
/// cmdlet to count the number of processes running on the system.
/// </summary>
/// <param name="args">Parameter is not used.</param>
/// <remarks>
/// This sample demonstrates the following:
/// 1. Creating a runspace using the RunspaceFactory class.
/// 2. Creating a PowerShell object
/// 3. Adding individual cmdlets to the PowerShell object.
/// 4. Running the cmdlets synchronously.
/// 5. Working with PSObject objects to extract properties
/// from the objects returned by the cmdlets.
/// </remarks>
private static void Main(string[] args)
{
Collection<PSObject> result; // Will hold the result
// of running the cmdlets.
// Create a runspace. We can not use the RunspaceInvoke class
// because we need to get at the underlying runspace to
// explicitly add the commands. 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())
{
myRunSpace.Open();
// Create a PowerShell object and specify the runspace.
PowerShell powershell = PowerShell.Create();
powershell.Runspace = myRunSpace;
// Use the using statement so we dispose of the PowerShell object
// when we're done.
using (powershell)
{
// Add the get-process cmdlet to the PowerShell object. Notice
// we are specify the name of the cmdlet, not a script.
powershell.AddCommand("get-process");
// Add the measure-object cmdlet to count the number
// of objects being returned. Commands are always added to the end
// of the pipeline.
powershell.AddCommand("measure-object");
// Run the cmdlets synchronously and save the objects returned.
result = powershell.Invoke();
}
// Even after disposing of the pipeLine, we still need to set
// the powershell variable to null so that the garbage collector
// can clean it up.
powershell = null;
// Display the results of running the commands (checking that
// everything is ok first.
if (result == null || result.Count != 1)
{
throw new InvalidOperationException(
"pipeline.Invoke() returned the wrong number of objects");
}
PSMemberInfo count = result[0].Properties["Count"];
if (count == null)
{
throw new InvalidOperationException(
"The object returned doesn't have a 'count' property");
}
Console.WriteLine(
"Runspace07: The get-process cmdlet returned {0} objects",
count.Value);
// Close the runspace to release any resources.
myRunSpace.Close();
}
System.Console.WriteLine("Hit any key to exit...");
System.Console.ReadKey();
}
}
}
Zobacz też
Przewodnik programisty programu Windows PowerShell
zestaw SDK programu Windows PowerShell