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();
Alte URL:
/snippet/powershell-cmdlets-aus-net-aufrufen/4911