【问题标题】:Filtering contents of a file using powershell script使用 powershell 脚本过滤文件的内容
【发布时间】:2012-09-16 10:59:19
【问题描述】:

我在一个文本文件中有以下内容:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============

abc.exe                       9152 Console                    1     14,988 K
abc.exe                       7964 Console                    1     89,188 K

需要注意的重要一点是两个进程具有相同的名称 (abc.exe)。现在我只需要过滤其中一个进程的 PID。我正在考虑将任务列表的内容输出到文本文件中,然后从我想要的行中过滤 PID。我如何最好使用 powershell 脚本来执行此操作?我正在考虑正则表达式,但无法得到我想要的确切结果。这是两个进程之间的关系:

Parent.exe 
 ->abc.exe
   ->abc.exe

【问题讨论】:

  • 你如何确定你想要哪一个?通过PID?每次都不一样吗?使用最多内存的那个?当您说要“过滤”PID时,您是什么意思?你能给我们一个预期的输出示例吗?
  • 我已经在描述本身中添加了进程之间的关系,因为它比 Parent.exe ->abc.exe ->abc.exe 更形象化
  • 假设较高的 PID 是孙子是否安全?或者,您能否不简单地按照here 获取 parentProcessID 并将其与另一行进行比较?
  • 不,父母拥有更高 PID 的假设在任何时候都无效。
  • 或者即使有办法找到 Parent.exe 的孙子进程的 PID,也可以。但我不知道。

标签: regex powershell scripting filter pid


【解决方案1】:

什么工具生成文本文件?可以修改生成流程信息表的工具吗?

没有使用Get-Process cmdlet 收集进程父/子层次结构。考虑改用Get-WMIObject win32_process,因为它的输出包含父进程的字段,恰当地命名为ParentProcessId。请注意,Windows 会回收进程 ID,因此该字段可能指向不存在的进程或另一个与手头进程无关的进程。请参阅MSDN 上的 MS 文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 2017-11-30
    相关资源
    最近更新 更多