2016-10-03 5 views
1

Я пытаюсь выполнить эту команду внутри приложения C# (списки расширений Firefox).Выполнение команд PowerShell на C#

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

Из MSDN документации я понял, код должен выглядеть как-то вроде

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(); 

однако, «результаты» является null (когда PS линия не является). Я нашел некоторые подобные вопросы на SO, но я ничего не смог бы ответить на это. Кто-нибудь знает, как я могу исправить свой код?

ответ

1

Вы можете попробовать этот код, чтобы получить нужный результат. Вместо использования PowerShell.Create он использует RunspaceInvoke.Invoke, используя только полную команду в качестве параметра. Надеюсь, это поможет:

using (RunspaceInvoke invoke = new RunspaceInvoke()) 
{ 
    Collection<PSObject>result = invoke.Invoke("Get-ChildItem -Path $env:USERPROFILE\"\\AppData\\Roaming\\Mozilla\\Firefox\\Profiles\\*\\extensions.json\" | Get-Content"); 
} 
Смежные вопросы