当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] RunSpace03 (C#) 代码示例

作者:精品下载站 日期:2024-12-14 02:27:43 浏览:12 分类:玩电脑

RunSpace03 (C#) 代码示例


以下是“创建运行指定脚本的控制台应用程序”中描述的控制台应用程序的 C# 源代码。此示例使用 System.Management.Automation.Runspaceinvoke 类来执行脚本,该脚本通过使用传递到脚本中的进程名称列表来检索进程信息。它展示了如何将输入对象传递给脚本以及如何检索错误对象以及输出对象。

笔记

您可以使用适用于 Windows Vista 和 Microsoft .NET Framework 3.0 运行时组件的 Microsoft Windows 软件开发工具包下载此示例的 C# 源文件 (runspace03.cs)。有关下载说明,请参阅如何安装 Windows PowerShell 和下载 Windows PowerShell SDK。下载的源文件位于 目录中。

代码示例

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();
        }
    }
}

参见

Windows PowerShell 程序员指南

Windows PowerShell SDK

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯