You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过C#调用PowerShell获取包含空格的进程名?

解决C#调用PowerShell获取带空格进程名的问题

哈哈,这个问题我之前踩过坑!当进程名称包含空格时,直接拼接PowerShell命令会被解析成多个参数,导致根本匹配不到目标进程。下面是几个靠谱的解决方案,优先推荐第二种:

方法1:给进程名添加引号包裹

手动给带空格的进程名加上单引号或双引号,让PowerShell把它当成一个整体。注意如果进程名里本身包含单引号,要替换成两个单引号(PowerShell的转义规则):

using System.Management.Automation;

var targetProcess = "My Test App.exe";
// 用单引号包裹,同时转义内部的单引号
var psCommand = $"Get-Process -Name '{targetProcess.Replace("'", "''")}'";

using (var powerShell = PowerShell.Create())
{
    powerShell.AddScript(psCommand);
    var processResults = powerShell.Invoke();
    
    foreach (var result in processResults)
    {
        Console.WriteLine($"找到进程:{result.Properties["ProcessName"].Value}");
    }
}

如果用双引号的话,在C#里要记得转义双引号(用\"),不过单引号的方式在处理特殊字符时更省心一点。

方法2:使用参数绑定(推荐!)

直接拼接字符串不仅容易出问题,还存在PowerShell注入的风险。更好的方式是用PowerShell的参数绑定功能,把进程名作为参数传递,系统会自动处理空格和特殊字符:

using System.Management.Automation;

var targetProcess = "My Test App.exe";

using (var powerShell = PowerShell.Create())
{
    // 直接添加命令和参数,无需手动处理引号
    powerShell.AddCommand("Get-Process")
              .AddParameter("Name", targetProcess);
    
    var processResults = powerShell.Invoke();
    
    foreach (var result in processResults)
    {
        Console.WriteLine($"找到进程:{result.Properties["ProcessName"].Value}");
    }
}

这种方式既安全又省心,完全不用考虑字符串转义的各种情况,是最规范的写法。

方法3:通过进程路径过滤(可选)

如果你知道进程的完整可执行文件路径,也可以通过路径来过滤进程,同样用参数绑定:

using System.Management.Automation;

var processPath = @"C:\Program Files\MyApp\My Test App.exe";

using (var powerShell = PowerShell.Create())
{
    powerShell.AddCommand("Get-Process")
              .AddParameter("FilePath", processPath);
    
    var processResults = powerShell.Invoke();
    
    foreach (var result in processResults)
    {
        Console.WriteLine($"找到进程:{result.Properties["ProcessName"].Value}");
    }
}

总结一下,优先用方法2,既解决了空格问题,又避免了潜在的安全风险,代码也更简洁易维护。

内容的提问来源于stack exchange,提问作者oops

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:19:44