Hallo,
ich programiere gerade eine Funktion, die Powershell Scripts aus meiner Applikation heraus aufruft. Es sieht folgendermaßen aus:
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
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