Voorbeeld Runspace04
In dit voorbeeld ziet u hoe u de klasse System.Management.Automation.Powershell gebruikt om opdrachten uit te voeren en hoe u beëindigingsfouten kunt ondervangen die zijn ontstaan bij het uitvoeren van de opdrachten. Er worden twee opdrachten uitgevoerd en de laatste opdracht wordt een ongeldig parameterargument doorgegeven. Als gevolg hiervan worden er geen objecten geretourneerd en wordt er een eindfout opgetreden.
Vereisten
Voor dit voorbeeld is Windows PowerShell 2.0 vereist.
Demonstreert
In dit voorbeeld wordt het volgende gedemonstreerd.
Opdrachten toevoegen aan de pijplijn van het object System.Management.Automation.Powershell.
Parameterargumenten toevoegen aan de pijplijn.
De opdrachten synchroon aanroepen.
Gebruik System.Management.Automation.PSObject-objecten om eigenschappen te extraheren en weer te geven van de objecten die door de opdrachten worden geretourneerd.
Ophalen en weergeven van foutrecords die zijn gegenereerd tijdens het uitvoeren van de opdrachten.
Het afhalen en weergeven van beëindigings-uitzonderingen die door de opdrachten zijn veroorzaakt.
Voorbeeld
In dit voorbeeld worden opdrachten synchroon uitgevoerd in de standaardrunspace die door Windows PowerShell. De laatste opdracht geeft een beëindigingsfout omdat een ongeldig parameterargument wordt doorgegeven aan de opdracht . De eindfout is vast komen te zitten en wordt weergegeven.
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();
}
}
}
Zie ook
Feedback
Feedback verzenden en weergeven voor