Dieses Snippet demonstriert wie man Powershell Cmdlets aus .NET heraus aufrufen kann.
Zusätzlich benötigte Verweise
System.Management.Automation.dll
-> Ggf. im Explorer im C:\Windows Ordner nach der Datei suchen lassen
Benötigte Namespaces
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();
Kommentare zum Snippet