【问题标题】:Get foreign address name using NETSTAT for established active TCP connections使用 NETSTAT 为已建立的活动 TCP 连接获取外部地址名称
【发布时间】:2013-03-11 17:31:56
【问题描述】:

我在 PowerShell 中使用 NETSTAT 命令。我需要获取以 XYZ 名称开头并使用 TCP 连接建立为状态的外部地址列表。

由于 NETSTAT 结果如下所示,我一直无法解析。

PS C:\Windows\system32> .\NETSTAT.EXE

Active Connections

  Proto  Local Address          Foreign Address        State
  TCP    10.125.4.233:2310      157.05.39.133:2492     ESTABLISHED

我只需要本地主机上的外部地址名称而不是远程地址。
远程地址不显示 FQDN。

【问题讨论】:

    标签: powershell netstat


    【解决方案1】:

    运行 netstat /?产量,除其他外:

    -f 显示外国的完全限定域名 (FQDN) 地址。

    使用 New-PSObjectFromMatches 解析:

    netstat -f |
     new-psobjectfrommatches -pattern "(TCP|UDP)\s+(\S+)\s+(\S+):(\S+)\s+(\S+)" -property $nul,TCP/UDP,LocalAddress,ForeignAddress,Protocol,State |
     where {(
             ($_.TCP/UDP -eq 'TCP') -and
             ($_.State -eq 'ESTABLISHED') -and
             ($_.ForeignAddress -like 'XYZ*')
            )} | select -ExpandProperty ForeignAddress 
    

    【讨论】:

    • Coorect,它显示了我在问题中提到的列表。我的问题不同,如何使用 powershell 解析为外部地址名称列表的变量?
    • 啊。好吧,我用这个:gallery.technet.microsoft.com/scriptcenter/… Parsing netstat output is in the examples之一。
    • 不走运,我已经尝试过这个解决方案。但是,我还是会再次经历。
    • 用过滤器更新答案。
    • @mjolinor 脚本中心很好用
    【解决方案2】:
     $netstats = netstat -p TCP -f
     $data = $netstats[4..($netstats.count)] #The good info starts on index 4
     foreach($line in $data){
         $line = $line -split ' ' | ? {$_ -ne ''}
         $final += @(New-Object -TypeName psobject -Property @{'Proto'=$line[0];'LAddress'=$line[1];'FAddress'=$line[2];'State'=$line[3]})
     }
     $netstat_results = $final
     $netstat_results | ? {$_.state -eq 'ESTABLISHED'}
    

    现在解析netstat返回的文本后应该很容易得到你想要的数据了。

    【讨论】:

      【解决方案3】:

      +1 代表@E.V.I.L。回答,但由于分配($netstats$final),它阻塞了来自NetStat 的(慢)流。 为了保持管道流式传输,最好避免分配,例如:

      netstat -p TCP -f | Select -Skip 4 | ForEach {
          $Properties = $_.Trim() -split '[\s]+'
          [PSCustomObject]@{
              'Proto'= $Properties[0]
              'Local Address'= $Properties[1]
              'Foreign Address'= $Properties[2]
              'State'= $Properties[3]
          }
      }
      

      通过添加例如| Select -Expand 'Foreign Address',你只需要得到Foreign Address

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-06-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-07
        • 2012-11-11
        • 1970-01-01
        • 2015-11-29
        相关资源
        最近更新 更多