首页 > 解决方案 > 如何查看端口后面正在运行的进程

问题描述

我喜欢 PowerShell。这是我的第一个脚本语言,我发现自己想了解更多。因此,我有兴趣设置一个状态页面来反映给定端口后面的特定程序的状态。

例如,coffeemug.exe 通过端口 60132 在本地计算机上运行。如何从托管状态页面的服务器远程查看端口后面的进程?

在本地主机(应用服务器)上,通过 PS 很容易看到:

PS C:\> $AppPortID = ( Get-NetTCPConnection -LocalPort 60132 ).OwningProcess
PS C:\> $AppPortID
2776
PS C:\> ( Get-WmiObject win32_process | Where-Object {$_.ProcessID -eq $AppPortID} ).ProcessName
coffeemug.exe

然而,远程地,我还没有找到实现这一目标的方法。通过 cmdletTest-NetConnection我可以识别打开的端口,但我无法找到一种方法来利用在所述端口上运行的服务/进程。有任何想法吗?

到目前为止我所拥有的Test-NetConnection

Test-NetConnection -ComputerName application.domain.com -Port 60132 -InformationLevel Detailed

::编辑::

我应该更具体。我希望能够远程执行此操作,而无需使用调用命令或类似的东西。就像您可以 ping 随机服务器一样。

标签: powershell

解决方案


如果我正确理解了这个问题,调用命令对我有用

$processid = invoke-command -computername 'remote' -scriptblock {
    Get-NetTCPConnection -LocalPort 1433)
    }

Get-wmiobject 有一个名为 computername 的属性,所以你可以在下面做

get-wmiobject -computername 'remote' -processid $processid

推荐阅读