在c#上执行PowerShell命令行

本文关键字:PowerShell 命令行 执行 | 更新日期: 2023-09-27 18:11:21

我正在尝试在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上发现了一些类似的问题,但没有什么我可以真正用来回答这个问题。有人知道怎么修改代码吗?

在c#上执行PowerShell命令行

您可以尝试这段代码来获得您想要的结果。它不是使用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");
}