繁体   English   中英

如何确定 Windows 服务正在侦听的端口?

[英]How to determine the port on which a Windows service is listening?

我运行了一个名为my-service的 Windows my-service 我知道的唯一输入是服务名称

我可以使用服务名称获取进程标识符

$id = Get-WmiObject -Class Win32_Service -Filter "name='my-service'" | Select-Object -ExpandProperty ProcessId

要获取侦听端口列表,我可以使用netstat ,但我所有的自定义服务的PID 4都不等于Get-WmiObject cmdlet 的服务进程标识符

netstat.exe -ano

目标是使用 PowerShell 或 CMD 根据服务名称进程标识符而不是图像名称来获取服务正在侦听的端口。

使用Get-NetTCPConnection来识别给定进程当前正在侦听的套接字:

Get-NetTCPConnection -OwningProcess $id -State Listen

由于您已包含标记,因此您可以在 cmd.exe 中尝试以下想法,即 Windows 命令提示符:

For /F "Tokens=2 Delims=," %G In ('%SystemRoot%\System32\tasklist.exe /SVC /Fi "Services Eq my-service" /Fo CSV /NH 2^>NUL') Do @For /F "Tokens=3 Delims=: " %H In ('%SystemRoot%\System32\netstat.exe -ano ^| %SystemRoot%\System32\findstr.exe "[^0123456789]%~G$" ^| %SystemRoot%\System32\find.exe /V "["') Do @Echo %H

只需将my-service更改为您的“真实”服务名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM