在C#上执行PowerShell命令行

我正在尝试在C#应用程序中执行此命令(列出Firefox扩展)。

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 results = ps.Invoke(); 

但是,“结果”为null (当PS线不是时)。 我在SO上发现了一些类似的问题,但我真的无法回答这个问题。 有谁知道如何修复我的代码?

您可以尝试使用此代码来获得所需的结果。而不是使用PowerShell.Create ,它使用RunspaceInvoke.Invoke ,只使用完整命令作为参数。 希望能帮助到你:

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