Home > Back-end >  How can i show only local address and PID in powershell?
How can i show only local address and PID in powershell?

Time:12-02

 (netstat -ano) -replace '0\.0\.0\.0:(\d )','$1        '

what i want is to show only local address and pid using above code

  Proto  Local Address          Foreign Address        State           PID
  TCP    135                    0                      LISTENING       1172
  TCP    445                    0                      LISTENING       4
  TCP    5040                   0                      LISTENING       7300
  TCP    5357                   0                      LISTENING       4
  TCP    7680                   0                      LISTENING       14100
  TCP    49664                  0                      LISTENING       988
  TCP    49665                  0                      LISTENING       896
  TCP    49666                  0                      LISTENING       1724
  TCP    49667                  0                      LISTENING       1472
  TCP    49668                  0                      LISTENING       3520
  TCP    49728                  0                      LISTENING       968

but what i want

Local Address             PID
135                       1172
445                       4
5040                      7300
.                         .
.                         .
.                         .

CodePudding user response:

To just get the output you're requesting by column headers in Powershell, you can use:

Get-NetTCPConnection | 
  Select-Object LocalAddress, OwningProcess | 
  Sort-Object LocalAddress, OwningProcess

Your example data seems to show ports rather than addresses, so:

Get-NetTCPConnection | 
  Select-Object LocalPort, OwningProcess | 
  Sort-Object LocalPort, OwningProcess

If you also need UDP connections, substitute Get-NetUDPEndpoint for Get-NetTCPConnection above.

Finally, if you want it all together:

(Get-NetUDPEndpoint |
    Select-Object @{L="Proto"; E={"TCP"}}, LocalAddress, LocalPort, OwningProcess
)   (Get-NetTCPConnection |
    Select-Object @{L="Proto"; E={"UDP"}}, LocalAddress, LocalPort, OwningProcess
) |
    Sort-Object Proto, LocalPort, LocalAddress

CodePudding user response:

Will this do what you want? I assume by "Local Address" you mean port number, and by "PID" you mean the owning process ID. I would not want to rename them if I could avoid it.

Get-NetTCPConnection |
    Where-Object { $_.LocalAddress -notmatch '^(127\..*|192\..*|0\..*|::$)' } |
    Select-Object -Property @{n='LocalAddress';e={$_.LocalPort}},@{n='PID';e={$_.OwningProcess}} |
    Sort-Object -Property LocalAddress

CodePudding user response:

You've got the information you need, now just trim out the excess properties with a nasty regex loop? may need some spacing adjustments

 (netstat -ano) `
  -replace '0\.0\.0\.0:(\d )','$1        '|
  foreach{
    Write-host `
     -nonewline "$([regex]::split("$_",'\s\s ')[2,5])`r`n"
  }

I've used grave-accent (poweshell escape-key) to escape linebreaks for readability | will pipe to whatever comes on the next line

  • Related