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

[玩转系统] Runspace04 示例

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

Runspace04 示例


此示例演示如何使用 System.Management.Automation.Powershell 类运行命令,以及如何捕获运行命令时引发的终止错误。运行两个命令,最后一个命令传递的参数参数无效。结果,不会返回任何对象并引发终止错误。

要求

此示例需要 Windows PowerShell 2.0。

示范

该示例演示了以下内容。

  • 创建 System.Management.Automation.Powershell 对象。

  • 将命令添加到 System.Management.Automation.Powershell 对象的管道。

  • 将参数参数添加到管道。

  • 同步调用命令。

  • 使用 System.Management.Automation.PSObject 对象从命令返回的对象中提取并显示属性。

  • 检索并显示命令运行过程中生成的错误记录。

  • 捕获并显示命令引发的终止异常。

例子

此示例在 Windows PowerShell 提供的默认运行空间中同步运行命令。最后一个命令会引发终止错误,因为传递给该命令的参数参数无效。终止错误被捕获并显示。

namespace Microsoft.Samples.PowerShell.Runspaces
{
  using System;
  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 Runspace04
  {
    /// <summary>
    /// This sample shows how to use a PowerShell object to run commands.
    /// The commands generate a terminating exception that the caller
    /// should catch and process.
    /// </summary>
    /// <param name="args">The parameter is not used.</param>
    /// <remarks>
    /// This sample demonstrates the following:
    /// 1. Creating a PowerShell object to run commands.
    /// 2. Adding commands to the pipeline of  the PowerShell object.
    /// 3. Passing input objects to the commands from the calling program.
    /// 4. Using PSObject objects to extract and display properties from the
    ///    objects returned by the commands.
    /// 5. Retrieving and displaying error records that were generated
    ///    while running the commands.
    /// 6. Catching and displaying terminating exceptions generated
    ///    while running the commands.
    /// </remarks>
    private static void Main(string[] args)
    {
      // Create a PowerShell object.
      using (PowerShell powershell = PowerShell.Create())
      {
        // Add the commands to the PowerShell object.
        powershell.AddCommand("Get-ChildItem").AddCommand("Select-String").AddArgument("*");

        // Run the commands synchronously. Because of the bad regular expression,
        // no objects will be returned. Instead, an exception will be thrown.
        try
        {
          foreach (PSObject result in powershell.Invoke())
          {
            Console.WriteLine("'{0}'", result.ToString());
          }

          // Process any error records that were generated while running the commands.
          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());
            }
          }
        }
        catch (RuntimeException runtimeException)
        {
          // Trap any exception generated by the commands. These exceptions
          // will all be derived from the RuntimeException exception.
          System.Console.WriteLine(
                        "Runtime exception: {0}: {1}\n{2}",
                        runtimeException.ErrorRecord.InvocationInfo.InvocationName,
                        runtimeException.Message,
                        runtimeException.ErrorRecord.InvocationInfo.PositionMessage);
        }
      }

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

参见

编写 Windows PowerShell 主机应用程序

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

取消回复欢迎 发表评论:

关灯