ตัวอย่าง Runspace02
ตัวอย่างนี้แสดงวิธีการใช้คลาส System.Management.Automation.Powershell เพื่อรัน Get-Process และ Sort-Object cmdlet พร้อมกัน Get-Process cmdlet ส่งคืนวัตถุ System.Diagnostics.Process สำหรับแต่ละกระบวนการที่ทำงานบนคอมพิวเตอร์เฉพาะที่ และ Sort-Object เรียงลำดับวัตถุตามคุณสมบัติ System.Diagnostics.Process.Id* ผลลัพธ์ของคำสั่งเหล่านี้จะแสดงขึ้นโดยใช้ตัวควบคุม System.Windows.Forms.Datagridview
ความต้องการ
ตัวอย่างนี้ต้องใช้ Windows PowerShell 2.0
แสดงให้เห็น
ตัวอย่างนี้สาธิตสิ่งต่อไปนี้
การสร้างวัตถุ System.Management.Automation.Powershell เพื่อรันคำสั่ง
การเพิ่มคำสั่งไปยังไปป์ไลน์ของวัตถุ System.Management.Automation.Powershell
-
การรันคำสั่งพร้อมกัน
การใช้ตัวควบคุม System.Windows.Forms.Datagridview เพื่อแสดงผลลัพธ์ของคำสั่งในแอปพลิเคชัน Windows Forms
ตัวอย่าง
ตัวอย่างนี้รัน Get-Process และ Sort-Object cmdlet พร้อมกันใน runspace เริ่มต้นที่ได้รับจาก Windows PowerShell ผลลัพธ์จะแสดงในรูปแบบโดยใช้ตัวควบคุม System.Windows.Forms.Datagridview
namespace Microsoft.Samples.PowerShell.Runspaces
{
using System;
using System.Collections;
using System.Collections.ObjectModel;
using System.Management.Automation;
using System.Management.Automation.Runspaces;
using System.Windows.Forms;
using PowerShell = System.Management.Automation.PowerShell;
/// <summary>
/// This class contains the Main entry point for this host application.
/// </summary>
internal class Runspace02
{
/// <summary>
/// This method creates the form where the output is displayed.
/// </summary>
private static void CreateForm()
{
Form form = new Form();
DataGridView grid = new DataGridView();
form.Controls.Add(grid);
grid.Dock = DockStyle.Fill;
// Create a PowerShell object. Creating this object takes care of
// building all of the other data structures needed to run the command.
using (PowerShell powershell = PowerShell.Create())
{
powershell.AddCommand("get-process").AddCommand("sort-object").AddArgument("ID");
if (Runspace.DefaultRunspace == null)
{
Runspace.DefaultRunspace = powershell.Runspace;
}
Collection<PSObject> results = powershell.Invoke();
// The generic collection needs to be re-wrapped in an ArrayList
// for data-binding to work.
ArrayList objects = new ArrayList();
objects.AddRange(results);
// The DataGridView will use the PSObjectTypeDescriptor type
// to retrieve the properties.
grid.DataSource = objects;
}
form.ShowDialog();
}
/// <summary>
/// This sample uses a PowerShell object to run the Get-Process
/// and Sort-Object cmdlets synchronously. Windows Forms and
/// data binding are then used to display the results in a
/// DataGridView control.
/// </summary>
/// <param name="args">The parameter is not used.</param>
/// <remarks>
/// This sample demonstrates the following:
/// 1. Creating a PowerShell object.
/// 2. Adding commands and arguments to the pipeline of
/// the PowerShell object.
/// 3. Running the commands synchronously.
/// 4. Using a DataGridView control to display the output
/// of the commands in a Windows Forms application.
/// </remarks>
private static void Main(string[] args)
{
Runspace02.CreateForm();
}
}
}
ดูเพิ่มเติม
การเขียนแอปพลิเคชันโฮสต์ Windows PowerShell