// // Copyright (c) 2009 Microsoft Corporation. All rights reserved. // // DISCLAIMER OF WARRANTY: The software is licensed “as-is.” You // bear the risk of using it. Microsoft gives no express warranties, // guarantees or conditions. You may have additional consumer rights // under your local laws which this agreement cannot change. To the extent // permitted under your local laws, Microsoft excludes the implied warranties // of merchantability, fitness for a particular purpose and non-infringement. namespace Microsoft.Samples.PowerShell.Runspaces { using System; using System.Management.Automation; using PowerShell = System.Management.Automation.PowerShell; /// /// This class contains the Main entry point for this host application. /// internal class Runspace01 { /// /// This sample uses the PowerShell class to execute /// the get-process cmdlet synchronously. The name and /// handlecount are then extracted from the PSObjects /// returned and displayed. /// /// Parameter not used. /// /// This sample demonstrates the following: /// 1. Creating a PowerShell object to run a command. /// 2. Adding a command to the pipeline of the PowerShell object. /// 3. Running the command synchronously. /// 4. Using PSObject objects to extract properties from the objects /// returned by the command. /// private static void Main(string[] args) { // 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().AddCommand("get-process")) { Console.WriteLine("Process HandleCount"); Console.WriteLine("--------------------------------"); // Invoke the command synchronously and display the // ProcessName and HandleCount properties of the // objects that are returned. foreach (PSObject result in powershell.Invoke()) { Console.WriteLine( "{0,-20} {1}", result.Members["ProcessName"].Value, result.Members["HandleCount"].Value); } } System.Console.WriteLine("Hit any key to exit..."); System.Console.ReadKey(); } } }