powershell - Add-Member : 输入对象不能绑定任何参数
问题描述
我正在尝试获取打开端口的列表,然后使用 PID 查找processname
和username
via get-username
,所有这些都打包到一个数组中:
[array] $ports = get-nettcpconnection |
Select-object state, creationtime, localaddress, localport, owningprocess, remoteport, remoteaddress
foreach($i in $ports.owningprocess)
{
Get-Process -Id $i -IncludeUserName |
Add-Member -inputobject $ports -NotePropertyMembers @{
processname = $_.processname
username = $_.username
}
}
但我只是收到以下错误:
Add-Member : The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.
At line:5 char:1
我在这里做错了什么?还是有完全不同的更好的方法来做到这一点?
解决方案
发生错误是因为您已经明确绑定$ports
到-InputObject
- PowerShell 只能执行其中一项。
迭代$ports.OwningProcess
意味着您丢失了对 individual 的引用$port
,因此您需要将foreach
循环更改为:
$ports = Get-NetTCPConnection |Select-Object State, CreationTime, LocalAddress, LocalPort, OwningProcess, RemotePort, RemoteAddress
foreach($port in $ports)
{
# resolve owning process
$process = Get-Process -Id $port.OwningProcess -IncludeUserName
# add process details to $port
$port |Add-Member -NotePropertyMembers @{
ProcessName = $process.ProcessName
UserName = $process.UserName
}
}
# objects in $ports now have the ProcessName and UserName properties
$ports |Select-Object LocalPort,ProcessName,UserName
作为一种替代方法,您可以在调用之前立即枚举所有进程Get-NetTCPConnection
并构建一个引用表,您可以在计算属性中使用Select-Object
:
$OwnersByID = @{}
Get-Process -IncludeUserName |ForEach-Object { $OwnersByID[$_.Id -as [uint32]] = $_ }
$ports = Get-NetTCPConnection |Select-Object State, CreationTime, LocalAddress, LocalPort, OwningProcess, RemotePort, RemoteAddress,@{Name='ProcessName';Expression={$OwnersByID[$_.OwningProcess].Name}},@{Name='UserName';Expression={$OwnersByID[$_.OwningProcess].UserName}}
推荐阅读
- swift - SwiftUI - 将列表滚动到由外部变量控制的特定元素
- javascript - 试图通过 reactjs 中的 document.getgetElementsByTagName 进行映射
- html - 引导为什么我的页面在我的页面右侧有一个白条
- string - 拆分和反转一个字符串,并将数字、字母、特殊字符……放在一起
- laravel - 如何将我的 user_id 和 employee_id 保存到 laravel 中的 Civil_status_table 中
- jooq - 尝试实现自定义绑定时“找不到合适的方法”
- flutter - 扩展容器中的手势检测
- c++ - QuickFix c++ 不支持的消息类型
- r - 从R中的多个数据框中选择具有n列共同值的行
- python - 如何在两个日期之间添加 date_range - Python Pandas