Выполнение командных строк PowerShell на C#

#c# #powershell

#c# #powershell

Вопрос:

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

 Get-ChildItem -Path $env:USERPROFILE"AppDataRoamingMozillaFirefoxProfiles*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");
}