Esempio di Runspace04Runspace04 Sample

Questo esempio illustra come usare la classe System. Management. Automation. PowerShell per eseguire i comandi e come intercettare gli errori di terminazione che vengono generati quando si eseguono i comandi.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. Vengono eseguiti due comandi e all'ultimo viene passato un argomento di parametro non valido.Two commands are run, and the last command is passed a parameter argument that is not valid. Di conseguenza, non viene restituito alcun oggetto e viene generato un errore non fatale.As a result, no objects are returned and a terminating error is thrown.

RequisitiRequirements

Questo esempio richiede Windows PowerShell 2,0.This sample requires Windows PowerShell 2.0.

DimostraDemonstrates

In questo esempio vengono illustrate le operazioni seguenti.This sample demonstrates the following.

EsempioExample

In questo esempio i comandi vengono eseguiti in modo sincrono nei spazio predefiniti forniti da Windows PowerShell.This sample runs commands synchronously in the default runspace provided by Windows PowerShell. L'ultimo comando genera un errore di terminazione perché un argomento parametro non valido viene passato al comando.The last command throws a terminating error because a parameter argument that is not valid is passed to the command. L'errore di terminazione viene intercettato e visualizzato.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();
    }
  }
}

Vedere ancheSee Also

Scrittura di un'applicazione host di Windows PowerShellWriting a Windows PowerShell Host Application