$null, $null, $null, $null, $netstat = netstat -a -n -o [regex]$regexTCP = '(?\S+)\s+(?\S+)\s+(?\S+)\s+(?\S+)\s+(?\S+)' [regex]$regexUDP = '(?\S+)\s+(?\S+)\s+(?\S+)\s+(?\S+)' foreach ($net in $netstat) { switch -regex ($net.Trim()) { $regexTCP { $process = "" | Select-Object Protocol, LocalAddress, RemoteAddress, State, PID, ProcessName $process.Protocol = $matches.Protocol $process.LocalAddress = $matches.LocalAddress $process.RemoteAddress = $matches.RemoteAddress $process.State = $matches.State $process.PID = $matches.PID $process.ProcessName = ( Get-Process -Id $matches.PID ).ProcessName $process continue } $regexUDP { $process = "" | Select-Object Protocol, LocalAddress, RemoteAddress, State, PID, ProcessName $process.Protocol = $matches.Protocol $process.LocalAddress = $matches.LocalAddress $process.PID = $matches.PID $process.ProcessName = ( Get-Process -Id $matches.PID ).ProcessName $process continue } } }