You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell实现netstat -b等效功能并获取svchost.exe启动组件

PowerShell 实现 netstat -b 等效功能

netstat -b 用于显示创建每个连接或监听端口的可执行文件;当svchost.exe这类可执行文件承载多个独立组件时,还会展示创建连接/监听端口的组件调用序列——可执行文件名放在底部的[]中,上方是它调用的组件,逐层往上直到TCP/IP。注意该选项执行耗时较长,且需要管理员权限才能完整获取信息。

比如使用netstat -anb查看EventLog监听端口时,输出如下:

TCP    0.0.0.0:49665          0.0.0.0:0              LISTENING
  EventLog
  [svchost.exe]

以下PowerShell函数可输出所有监听进程,但仅能获取进程名,无法拿到组件信息:

function Get-ListeningProcesses {

    Get-NetTCPConnection -State Listen |
    ForEach-Object {
        $ProcessName = (Get-Process -Id $_.OwningProcess).ProcessName
        [PSCustomObject]@{
            LocalAddress = $_.LocalAddress
            LocalPort = $_.LocalPort
            OwningProcess = $_.OwningProcess
            ProcessName = $ProcessName
        }
    }
}

它的输出示例:

LocalAddress LocalPort OwningProcess ProcessName
------------ --------- ------------- -----------
...
::               49665          1412 svchost    
...

获取svchost.exe对应的组件方法

svchost.exe是Windows服务的托管进程,每个实例对应一组服务,我们可以通过进程ID关联到对应的服务(即组件名称),改进后的实现如下:

完整函数代码

function Get-TcpListenersWithComponents {
    Get-NetTCPConnection -State Listen | ForEach-Object {
        $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
        $components = @()
        
        # 针对svchost进程,查询其托管的服务
        if ($proc.ProcessName -eq 'svchost') {
            $services = Get-CimInstance Win32_Service | Where-Object { $_.ProcessId -eq $proc.Id }
            $components = $services | ForEach-Object { $_.Name }
        }
        
        [PSCustomObject]@{
            LocalAddress  = $_.LocalAddress
            LocalPort     = $_.LocalPort
            OwningProcess = $proc.Id
            ProcessName   = $proc.ProcessName
            Components    = if ($components.Count -gt 0) { $components -join ', ' } else { 'N/A' }
        }
    }
}

输出说明

  • 新增Components列:非svchost进程显示N/A,svchost进程则列出它托管的所有服务名称(即对应的组件)
  • 示例输出:
LocalAddress LocalPort OwningProcess ProcessName Components
------------ --------- ------------- ----------- ----------
::               49665          1412 svchost     EventLog

注意事项

  • 必须以管理员权限运行PowerShell,才能完整获取服务关联信息
  • 执行耗时会比原函数长,和netstat -b的特性一致

内容的提问来源于stack exchange,提问作者MiGro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:36:09