在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"); }