首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Powershell ForEach-Object :无法绑定参数

Powershell ForEach-Object :无法绑定参数
EN

Stack Overflow用户
提问于 2014-03-25 22:23:47
回答 4查看 5.3K关注 0票数 1

我正在尝试获取进程的所有者,代码:

代码语言:javascript
复制
(Get-WmiObject -class win32_process | where{$_.ProcessName -eq 'explorer.exe'}).getowner() | Foreach-Object user | out-string**

这在win8下运行得很好,但在win7中我得到了这个消息:

代码语言:javascript
复制
ForEach-Object : Cannot bind parameter 'Process'. Cannot convert the "user" val
ue of type "System.String" to type "System.Management.Automation.ScriptBlock".
At C:\Program Files (x86)\Advanced Monitoring Agent GP\scripts\9660.ps1:1 char:
108
+ (Get-WmiObject -class win32_process | where{$_.ProcessName -eq 'explorer.exe'
}).getowner() | Foreach-Object <<<<  user | out-string
    + CategoryInfo          : InvalidArgument: (:) [ForEach-Object], Parameter 
   BindingException
    + FullyQualifiedErrorId : CannotConvertArgumentNoMessage,Microsoft.PowerSh 
   ell.Commands.ForEachObjectCommand

请帮帮我!谢谢你抽出时间来。

EN

回答 4

Stack Overflow用户

发布于 2014-03-25 22:30:28

使用select -expand user而不是foreach-object user。这等同于做foreach-object { $_.user },这可能就是你想要做的。对语法灵活性的改进允许您在更高版本的powershell中进行首次尝试。

票数 1
EN

Stack Overflow用户

发布于 2014-03-25 22:30:36

旧版本的Powershell不能使用简化的语法。这应该适用于其中任何一个:

代码语言:javascript
复制
(Get-WmiObject -class win32_process | 
 where{$_.ProcessName -eq 'explorer.exe'}).getowner() |
 Foreach-Object { $_.user | out-string }
票数 0
EN

Stack Overflow用户

发布于 2014-03-25 22:33:17

代码语言:javascript
复制
(Get-WmiObject -class win32_process | where{$_.ProcessName -eq 'explorer.exe'}).getowner() | select user
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22637434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档