2016-07-07 8 views
0

Ich habe derzeit einen Server mit 5 IPs eingerichtet. Auf diesem Server betreibe ich ein Game-Server-Management-System namens TCAdmin, um Spiele-Server IPs und Ports zuzuweisen. Ich versuche Powershell zu verwenden, um eine Liste von UDP-Verbindungen zu einer bestimmten IP aus diesem Pool zu erhalten. Diese Verbindungen wären die Spieler, die gerade online auf diesem Spieleserver sind. Wenn ich Netstat ausführen, um alle Verbindungen anzuzeigen, gibt es jedoch keine TCP- oder UDP-Verbindungen, die angezeigt werden. Bekomme ich nur eine Liste von Elementen, die wie folgt aussehen:Liste der UDP-Verbindungen über Powershell abrufen

UDP xx.xx.xx.122:138  *:*         4 

Ich weiß, dass es mehr als 20 Spieler auf diesem speziellen Spiel-Server verbunden, so dass ich bin ratlos, wie netstat-Skript oder ein anderes gebaut -in Werkzeug, um die 20+ Player-Verbindungen zu greifen.

Jede Hilfe oder Hinweise wird geschätzt!

Antwort

0

Fand dieses https://learn-powershell.net/2011/02/21/querying-udp-ports-with-powershell/

function Get-NetworkStatistics 
    { 
     $properties = ‘Protocol’,’LocalAddress’,’LocalPort’ 
     $properties += ‘RemoteAddress’,’RemotePort’,’State’,’ProcessName’,’PID’ 

     netstat -ano | Select-String -Pattern ‘\s+(TCP|UDP)’ | ForEach-Object { 

      $item = $_.line.split(” “,[System.StringSplitOptions]::RemoveEmptyEntries) 

      if($item[1] -notmatch ‘^\[::’) 
      {    
       if (($la = $item[1] -as [ipaddress]).AddressFamily -eq ‘InterNetworkV6’) 
       { 
        $localAddress = $la.IPAddressToString 
        $localPort = $item[1].split(‘\]:’)[-1] 
       } 
       else 
       { 
        $localAddress = $item[1].split(‘:’)[0] 
        $localPort = $item[1].split(‘:’)[-1] 
       } 

       if (($ra = $item[2] -as [ipaddress]).AddressFamily -eq ‘InterNetworkV6’) 
       { 
        $remoteAddress = $ra.IPAddressToString 
        $remotePort = $item[2].split(‘\]:’)[-1] 
       } 
       else 
       { 
        $remoteAddress = $item[2].split(‘:’)[0] 
        $remotePort = $item[2].split(‘:’)[-1] 
       } 

       New-Object PSObject -Property @{ 
        PID = $item[-1] 
        ProcessName = (Get-Process -Id $item[-1] -ErrorAction SilentlyContinue).Name 
        Protocol = $item[0] 
        LocalAddress = $localAddress 
        LocalPort = $localPort 
        RemoteAddress =$remoteAddress 
        RemotePort = $remotePort 
        State = if($item[0] -eq ‘tcp’) {$item[3]} else {$null} 
       } | Select-Object -Property $properties 
      } 
     } 
    } 

    Get-NetworkStatistics | Format-Table