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

如何在PowerShell中合并代码实现端口关联服务名的结构化输出

PowerShell查询服务对应端口占用实现代码

你可以通过哈希表映射进程ID和服务名的方式合并两段逻辑,最终代码如下:

# 构建进程ID与对应服务名的映射表
$serviceMap = @{}
Get-CimInstance Win32_Service | ForEach-Object {
    $serviceMap[$_.ProcessId] = $_.Name
}

# 合并TCP/UDP端口查询结果,关联服务名后按端口排序
(Get-NetUDPEndpoint | Select-Object LocalPort, OwningProcess) +
(Get-NetTCPConnection | Select-Object LocalPort, OwningProcess) |
Sort-Object LocalPort |
ForEach-Object {
    [PSCustomObject]@{
        Name          = $serviceMap[[int]$_.OwningProcess] ?? "非服务进程"
        LocalPort     = $_.LocalPort
        OwningProcess = $_.OwningProcess
    }
}
# 如需仅展示服务对应的端口,在上面代码最后追加 | Where-Object Name -ne "非服务进程"
# 如需对齐输出格式,在代码最后追加 | Format-Table -AutoSize

补充说明

  • 原代码中的Get-WmiObject已被微软官方弃用,这里替换为同等功能的Get-CimInstance,如需兼容PowerShell 2.0及更早版本,可以替换回Get-WmiObject Win32_Service。
  • 部分端口可能由普通应用(非系统服务)占用,这类进程的Name字段会显示为非服务进程,不需要的话可以用注释里的过滤语句筛掉。
  • 追加Format-Table -AutoSize后输出格式会和你提供的示例完全对齐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:57:03