簡體   English   中英

如何在 powershell 中僅顯示本地地址和 PID?

[英]How can i show only local address and PID in powershell?

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

我想要的是使用上面的代碼只顯示本地地址和 pid

  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

但我想要什么

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

要通過 Powershell 中的列標題獲得 output,您可以使用:

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

您的示例數據似乎顯示端口而不是地址,因此:

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

如果您還需要 UDP 連接, Get-NetUDPEndpoint Get-NetUDPEndpoint 替換為上面的Get-NetTCPConnection

最后,如果你想把它們放在一起:

(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

這會做你想要的嗎? 我假設“本地地址”是指端口號,而“PID”是指擁有的進程ID。 如果可以避免的話,我不想重命名它們。

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

您已經獲得了所需的信息,現在只需使用討厭的正則表達式循環修剪掉多余的屬性? 可能需要一些間距調整

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

我使用了重音(poweshell 轉義鍵)來轉義換行符以提高可讀性| 將 pipe 到下一行的任何內容

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM