首页 > 解决方案 > 使用 Get-NetTCPConnection 获取进程的命令行

问题描述

我想查看进程的命令行。我知道我可以使用以下命令获取进程的 cmd 行:

(Get-WmiObject Win32_Process -filter "ProcessId = '14376'").commandline

但我需要从Get-TCPNetConnection这样的命令中获取 cmd 行:

Get-NetTCPConnection | Select-Object OwningProcess,@{Name="cmdline";Expression={(Get-WmiObject Win32_Process -filter "ProcessId = $_.OwningProcess").commandline}} | Format-Table | select -first 7

但是,命令行丢失/空白。我的语法一定有问题,我无法识别。还是因为它没有显示的字符串太长?

标签: powershell

解决方案


您需要将$_.owningprocess附在子表达式中$()

Get-NetTCPConnection |
    Select-Object OwningProcess,
                 @{Name="cmdline";Expression={(Get-WmiObject Win32_Process -filter "ProcessId = $($_.OwningProcess)").commandline}}

只有基变量可以在没有子表达式的情况下用双引号展开

如果你真的想要最后 7 个进程,你需要交换你的 Select 和 Format 命令。正如所写的,其中 2 行将成为格式化的一部分,因此您最终将得到 5 个进程。


推荐阅读