Ejemplo Runspace04Runspace04 Sample

En este ejemplo se muestra cómo usar la clase System. Management. Automation. PowerShell para ejecutar comandos y cómo detectar los errores de terminación que se producen al ejecutar los comandos.This sample shows how to use the System.Management.Automation.Powershell class to run commands, and how to catch terminating errors that are thrown when running the commands. Se ejecutan dos comandos; al último, se le pasa un argumento de parámetro que no es válido.Two commands are run, and the last command is passed a parameter argument that is not valid. Como resultado, no se devuelve ningún objeto y se produce un error de terminación.As a result, no objects are returned and a terminating error is thrown.

RequisitosRequirements

Este ejemplo requiere Windows PowerShell 2,0.This sample requires Windows PowerShell 2.0.

MuestraDemonstrates

Este ejemplo muestra lo siguiente.This sample demonstrates the following.

EjemploExample

Este ejemplo ejecuta comandos sincrónicamente en el espacio de ejecución predeterminado proporcionado por Windows PowerShell.This sample runs commands synchronously in the default runspace provided by Windows PowerShell. El último comando produce un error de terminación porque un argumento de parámetro que no es válido se pasa al comando.The last command throws a terminating error because a parameter argument that is not valid is passed to the command. El error de terminación se captura y se muestra.The terminating error is trapped and displayed.

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

Consulte tambiénSee Also

Escritura de una aplicación de Host de Windows PowerShellWriting a Windows PowerShell Host Application