Ukázka kódu RunSpace03 (C#)

Zde je zdrojový kód C# pro konzolovou aplikaci popsanou v tématu "Vytvoření konzolové aplikace, která spouští zadaný skript". Tato ukázka používá třídu System. Management. Automation. Runspaceinvoke ke spuštění skriptu, který načte informace o procesu pomocí seznamu názvů procesů předaných do skriptu. Ukazuje, jak předat vstupní objekty skriptu a jak načíst objekty chyb i výstupní objekty.

Poznámka

zdrojový soubor C# (runspace03. cs) pro tuto ukázku si můžete stáhnout pomocí sady Microsoft Windows Software Development Kit pro komponenty Windows Vista a microsoft .NET Framework 3,0 Runtime. pokyny ke stažení najdete v tématu jak nainstalovat Windows PowerShell a stáhnout sadu Windows PowerShell SDK. Stažené zdrojové soubory jsou k dispozici v <PowerShell Samples> adresáři.

Vzorek kódu

namespace Microsoft.Samples.PowerShell.Runspaces
{
    using System;
    using System.Collections;
    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 Runspace03
    {
        /// <summary>
        /// This sample uses the PowerShell class to execute
        /// a script that retrieves process information for the
        /// list of process names passed into the script.
        /// It shows how to pass input objects to a script and
        /// how to retrieve error objects as well as the output objects.
        /// </summary>
        /// <param name="args">Parameter not used.</param>
        /// <remarks>
        /// This sample demonstrates the following:
        /// 1. Creating an instance of the PowerSHell class.
        /// 2. Using this instance to execute a string as a PowerShell script.
        /// 3. Passing input objects to the script from the calling program.
        /// 4. Using PSObject to extract and display properties from the objects
        ///    returned by this command.
        /// 5. Retrieving and displaying error records that were generated
        ///    during the execution of that script.
        /// </remarks>
        private static void Main(string[] args)
        {
            // Define a list of processes to look for
            string[] processNames = new string[] 
            {
              "lsass", "nosuchprocess", "services", "nosuchprocess2" 
            };

            // The script to run to get these processes. Input passed
            // to the script will be available in the $input variable.
            string script = "$input | get-process -name {$_}";

            // Create an instance of the PowerShell class.
            using (PowerShell powershell = PowerShell.Create())
            {
                powershell.AddScript(script);

                Console.WriteLine("Process              HandleCount");
                Console.WriteLine("--------------------------------");

                // Now invoke the PowerShell and display the objects that are
                // returned...
                foreach (PSObject result in powershell.Invoke(processNames))
                {
                    Console.WriteLine(
                        "{0,-20} {1}",
                        result.Members["ProcessName"].Value,
                        result.Members["HandleCount"].Value);
                }

                // Now process any error records that were generated while running the script.
                Console.WriteLine("\nThe following non-terminating errors occurred:\n");
                PSDataCollection<ErrorRecord> errors = powershell.Streams.Error;
                if (errors != null && errors.Count > 0)
                {
                    foreach (ErrorRecord err in errors)
                    {
                        System.Console.WriteLine("    error: {0}", err.ToString());
                    }
                }
            }

            System.Console.WriteLine("\nHit any key to exit...");
            System.Console.ReadKey();
        }
    }
}

Viz také

Příručka programátora Windows PowerShellu

Sada SDK Windows PowerShellu