Feedback

Powershell Cmdlets aus .NET aufrufen

Sprache: C#

Dieses Snippet demonstriert wie man Powershell Cmdlets aus .NET heraus aufrufen kann. [b]Zusätzlich benötigte Verweise[/b] System.Management.Automation.dll -> Ggf. im Explorer im C:Windows Ordner nach der Datei suchen lassen [b]Benötigte Namespaces[/b] System System.Diagnostics System.Management.Automation System.Linq
var script = PowerShell.Create();    //Instanz erstellen
script.AddScript("Get-Process");     //Script mit Cmdlets hinzufügen
var output = script.Invoke();        //Befehl ausführen, ggf. eine Liste mit Eingabeparametern übergeben

//Ergebnis ausgeben:
Console.WriteLine("{0,-15} {1,-5}", "ProcessName", "PID");
foreach (var process in output.Select(x => x.BaseObject)//Jeweils den .NET Typ des Ergebnisses abfragen
                              .OfType<Process>())//Nur Process-Objekte verarbeiten
{
    //In unserem Beispiel bekommen wir nur .NET Process-Objekte zurück
    Console.WriteLine("{0,-15} {1,5}", process.ProcessName, process.Id);
}
Console.ReadKey();
var script = PowerShell.Create();    //Instanz erstellen
script.AddScript("Get-Process");     //Script mit Cmdlets hinzufügen
var output = script.Invoke();        //Befehl ausführen, ggf. eine Liste mit Eingabeparametern übergeben

//Ergebnis ausgeben:
Console.WriteLine("{0,-15} {1,-5}", "ProcessName", "PID");
foreach (var process in output.Select(x => x.BaseObject)//Jeweils den .NET Typ des Ergebnisses abfragen
                              .OfType<Process>())//Nur Process-Objekte verarbeiten
{
    //In unserem Beispiel bekommen wir nur .NET Process-Objekte zurück
    Console.WriteLine("{0,-15} {1,5}", process.ProcessName, process.Id);
}
Console.ReadKey();