[英]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 的服务进程标识符。
目标是使用 PowerShell 或 CMD 根据服务名称或进程标识符而不是图像名称来获取服务正在侦听的端口。
使用Get-NetTCPConnection
来识别给定进程当前正在侦听的套接字:
Get-NetTCPConnection -OwningProcess $id -State Listen
由于您已包含cmd标记,因此您可以在 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.