Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet exemple montre comment utiliser la classe System.Management.Automation.PowerShell pour exécuter des commandes et comment intercepter les erreurs de fin qui sont levées lors de l’exécution des commandes. Deux commandes sont exécutées et la dernière commande est passée à un argument de paramètre qui n’est pas valide. Par conséquent, aucun objet n’est retourné et une erreur de fin est levée.
Spécifications
Cet exemple nécessite Windows PowerShell 2.0.
Montre ce qui suit
Cet exemple illustre ce qui suit.
Création d’un objet System.Management.Automation.PowerShell.
Ajout de commandes au pipeline de l’objet System.Management.Automation.PowerShell.
Ajout d’arguments de paramètre au pipeline.
Appel des commandes de manière synchrone.
À l’aide de System.Management.Automation.PSObject objets pour extraire et afficher les propriétés des objets retournés par les commandes.
Récupération et affichage des enregistrements d’erreur générés pendant l’exécution des commandes.
Capture et affichage des exceptions de fin levées par les commandes.
Exemple :
Cet exemple exécute des commandes de manière synchrone dans l’espace d’exécution par défaut fourni par Windows PowerShell. La dernière commande lève une erreur de fin, car un argument de paramètre non valide est passé à la commande. L’erreur de fin est interceptée et affichée.
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();
}
}
}