在C#上执行PowerShell命令行

时间:2016-10-03 13:23:23

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

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

1 个答案:

答案 0 :(得分: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");
}