C# Powershell RunSpace ErrorHandling

Magic1416

Lieutenant
Registriert
Dez. 2003
Beiträge
530
Hallo,

ich programiere gerade eine Funktion, die Powershell Scripts aus meiner Applikation heraus aufruft. Es sieht folgendermaßen aus:

Code:
       using System;
using System.Collections.ObjectModel;
using System.Diagnostics;
using System.IO;
using System.Management.Automation;           // Windows PowerShell namespace.
using System.Management.Automation.Runspaces;
using System.Threading; 


/// <summary>
        /// Execute Powershell with Runspace
        /// </summary>
        /// <param name="pathToPS">Path to ps1 File</param>
        /// <param name="argument">Path to ini File</param>
        /// <returns></returns>
        public static int ExecutePSRunspace(string pathToPS, string argument)
        {
            if (File.Exists(pathToPS))
            {
                //FileInfo fi = new FileInfo(pathToPS);

                // create Powershell runspace
                Runspace runspace = RunspaceFactory.CreateRunspace();
                //runspace.ApartmentState = System.Threading.ApartmentState.STA;
                //runspace.ThreadOptions = PSThreadOptions.UseCurrentThread;
                
                runspace.Open();

                //RunspaceInvoke runSpaceInvoker = new RunspaceInvoke(runspace);
                //runSpaceInvoker.Invoke("Set-ExecutionPolicy Unrestricted");
                
                PowerShell ps = PowerShell.Create();
                ps.Runspace = runspace;
                
                //Read Powershell Script
                ps.AddScript(System.IO.File.ReadAllText(pathToPS), false); 
                
                //Add Argument
                ps.AddArgument(argument); 
                
                //Execute Powershell
                Collection<PSObject> results = ps.Invoke(); //Ich dachte im Results Object steht der Errorcode oder igendwas brauchbares
                
                //Close Runspace
                runspace.Close();

                return 0;

            }
            return 2;

Der Codeschnippsel funktioniert soweit. Bloß was nicht funktioniert ist das Errorhandling. Ich bin davon ausgegangen, dass mein results Objekt den Errorcode oder vergleichbares enthält. Aber das Objekt ist leer. Ich kann aktuell nicht feststellen, ob es beim Ausführen einen syntaktischen Fehler, einen Laufzeitfehler, oder einen gewollten Abbruch des Scripts gibt. Hat jemand ne Idee ?
Vielen Dank für die Hilfe

Gruß Magic
 
Zurück
Oben