我創建了一個腳本來輸出Get-NetTCPConnection
數據,但另外顯示進程名稱和用戶名。該腳本確實的工作,但我會喜歡任何提示,以簡化或使這更加規範。PowerShell的:獲取NetTCPConnection腳本,也顯示用戶名和進程名稱
我想知道是否有更有效的方法將ProcessName
和Username
添加到輸出,而無需將值預加載到自定義PSObject($obj
陣列)中。我擔心自定義e={($obj |? PID -eq $_.OwningProcess | select -ExpandProperty UserName)}}
表達式過於複雜。
[email protected]()
Foreach($p In (Get-Process -IncludeUserName | where {$_.UserName} | `
select Id, ProcessName, UserName)) {
$properties = @{ 'PID'=$p.Id;
'ProcessName'=$p.ProcessName;
'UserName'=$p.UserName;
}
$psobj = New-Object -TypeName psobject -Property $properties
$obj+=$psobj
}
Get-NetTCPConnection | where {$_.State -eq "Established"} | select `
RemoteAddress, `
RemotePort, `
@{n="PID";e={$_.OwningProcess}}, @{n="ProcessName";e={($obj |? PID -eq $_.OwningProcess | select -ExpandProperty ProcessName)}}, `
@{n="UserName";e={($obj |? PID -eq $_.OwningProcess | select -ExpandProperty UserName)}} |
sort -Property ProcessName, UserName |
ft -auto
下面是一些樣本輸出截圖:
有一個代碼審查stackexchange網站,這可能更適合FYI。很酷的想法btw。 –
我不知道。對不起,如果這篇文章是OT。 MODS,隨時移動它! – luckman212