我创建了一个脚本来输出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