Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu örnek, bir runspace havuzunun runspace'lerini kullanarak komutları zaman uyumsuz olarak çalıştırmayı gösterir. Örnek bir komut listesi oluşturur ve ardından windows PowerShell altyapısı gerektiğinde havuzdan bir çalışma alanı açarken bu komutları çalıştırır.
Gereksinimler
- Bu örnek Için Windows PowerShell 2.0 gerekir.
Gösterir
Bu örnek aşağıdakileri gösterir:
- Aynı anda açılmasına izin verilen en az ve en fazla çalışma alanı sayısına sahip bir RunspacePool nesnesi oluşturma.
- Komut listesi oluşturma.
- Komutları zaman uyumsuz olarak çalıştırma.
- Kaç çalışma alanının ücretsiz olduğunu görmek için System.Management.Automation.Runspaces.RunspacePool.GetAvailableRunspaces* yöntemini çağırma.
- System.Management.Automation.PowerShell.EndInvoke* yöntemiyle komut çıktısını yakalama.
Örnek
Bu örnek, bir runspace havuzunun runspace'lerini açmayı ve bu runspace'lerde komutları zaman uyumsuz olarak çalıştırmayı gösterir.
namespace Sample
{
using System;
using System.Collections;
using System.Collections.Generic;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
/// <summary>
/// This class contains the Main entry point for the application.
/// </summary>
internal class PowerShell02
{
/// <summary>
/// Runs many commands with the help of a RunspacePool.
/// </summary>
/// <param name="args">This parameter is unused.</param>
private static void Main(string[] args)
{
// Creating and opening runspace pool. Use a minimum of 1 runspace and a maximum of
// 5 runspaces can be opened at the same time.
RunspacePool runspacePool = RunspaceFactory.CreateRunspacePool(1, 5);
runspacePool.Open();
using (runspacePool)
{
// Define the commands to be run.
List<PowerShell> powerShellCommands = new List<PowerShell>();
// The command results.
List<IAsyncResult> powerShellCommandResults = new List<IAsyncResult>();
// The maximum number of runspaces that can be opened at one time is
// 5, but we can queue up many more commands that will use the
// runspace pool.
for (int i = 0; i < 100; i++)
{
// Using a PowerShell object, run the commands.
PowerShell powershell = PowerShell.Create();
// Instead of setting the Runspace property of powershell,
// the RunspacePool property is used. That is the only difference
// between running commands with a runspace and running commands
// with a runspace pool.
powershell.RunspacePool = runspacePool;
// The script to be run outputs a sequence number and the number of available runspaces
// in the pool.
string script = String.Format(
"write-output ' Command: {0}, Available Runspaces: {1}'",
i,
runspacePool.GetAvailableRunspaces());
// The three lines below look the same running with a runspace or
// with a runspace pool.
powershell.AddScript(script);
powerShellCommands.Add(powershell);
powerShellCommandResults.Add(powershell.BeginInvoke());
}
// Collect the results.
for (int i = 0; i < 100; i++)
{
// EndInvoke will wait for each command to finish, so we will be getting the commands
// in the same 0 to 99 order that they have been invoked withy BeginInvoke.
PSDataCollection<PSObject> results = powerShellCommands[i].EndInvoke(powerShellCommandResults[i]);
// Print all the results. One PSObject with a plain string is the expected result.
PowerShell02.PrintCollection(results);
}
}
}
/// <summary>
/// Iterates through a collection printing all items.
/// </summary>
/// <param name="collection">collection to be printed</param>
private static void PrintCollection(IList collection)
{
foreach (object obj in collection)
{
Console.WriteLine("PowerShell Result: {0}", obj);
}
}
}
}
Ayrıca Bkz.
PowerShell