2016-10-03 1 views
1

Ich versuche, diesen Befehl in einer C# -Anwendung auszuführen (Listet Firefox-Erweiterungen auf).Ausführen von PowerShell-Befehlszeilen unter C#

Get-ChildItem -Path $env:USERPROFILE"\AppData\Roaming\Mozilla\Firefox\Profiles\*\extensions.json" | Get-Content 

Von MSDN-Dokumentation ich den Code heraus sollte jedoch wie

PowerShell ps = PowerShell.Create(); 
ps.AddCommand("Get-ChildItem"); 
ps.AddParameter("Path", "\"$env:USERPROFILE\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\*\\extensions.json\""); 
ps.AddCommand("Get-Content"); 
Collection<PSObject> results = ps.Invoke(); 

wie etwas aussieht, die "Ergebnisse" ist null (wenn die PS-Linie ist nicht). Ich habe einige ähnliche Fragen zu SO gefunden, aber nichts, was ich wirklich verwenden könnte, um dies zu beantworten. Jeder weiß, wie kann ich meinen Code reparieren?

Antwort

1

Sie können diesen Code versuchen, um die gewünschten Ergebnisse zu erhalten. Anstatt PowerShell.Create zu verwenden, verwendet es RunspaceInvoke.Invoke, mit nur dem vollständigen Befehl als Parameter. Hoffe es hilft:

using (RunspaceInvoke invoke = new RunspaceInvoke()) 
{ 
    Collection<PSObject>result = invoke.Invoke("Get-ChildItem -Path $env:USERPROFILE\"\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\*\\extensions.json\" | Get-Content"); 
}