【问题标题】:PowerShell Process Name using c#使用 c# 的 PowerShell 进程名称
【发布时间】:2018-01-16 14:50:06
【问题描述】:

我是个问题。

我使用 c# 通过 powershell 脚本获取进程名称。 但是,我没有得到值,因为进程名称包含空格。

如何使用 c# 在 powershell 中获取包含空格的值?

【问题讨论】:

  • 您的 scriptText 不是有效的 PowerShell。 s = Get-Process | ?{$_.Id -eq '21952'} 是什么意思?变量前面有$。语句之间的分号 (;) 在哪里?
  • 在我的机器上,Get-Process 采用-Id 参数,因此您可以简化对$s = Get-Process -Id 21952 的分配

标签: c# powershell whitespace psobject


【解决方案1】:

您不需要 PowerShell 来获取进程。

此示例行为您提供 ID 为 21952 的所有进程的 ID/名称(尽管我怀疑您不会有 ID 为 21952 的进程)。

 var processes = System.Diagnostics.Process.GetProcesses().Where(p => p.Id == 21952).ToDictionary(p => p.Id, p => p.ProcessName);

要删除该过滤器:

 var processes = System.Diagnostics.Process.GetProcesses().ToDictionary(p => p.Id, p => p.ProcessName);

【讨论】:

  • 感谢您的回答,但我必须使用 powershell。有办法吗?
【解决方案2】:

您可以直接在 C# 中执行以下操作

using System.Diagnostics;
...
int pid = 21952;
Process localById = Process.GetProcessById(pid);

Console.WriteLine($"Process name for pid {pid}: '{localById.ProcessName}' '{localById.MainModule.FileName}'");

【讨论】:

  • 感谢您的回答,但我必须使用 powershell。有办法吗?
猜你喜欢
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 2021-01-05
  • 2015-06-09
  • 2020-11-03
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多