我要做的是查看一些流程并获取这些流程的用户列表。以下代码对我来说很好。
get-wmiobject win32_process |
where{$_.name -like "*notepad*"}|sort {$_.CommandLine}|
select @{n="User";e={$_.getowner().user}},@{n="ProcessID";e={$_.ProcessID}},{$_.CommandLine} |ft -AutoSize |Out-String -Width 300 >> C:\ListUsers.txt
不知何故,我想在途中拆分$ _。CommandLine字符串,并输出一些拆分文件(尽管代码错误,但请参阅以下代码以获得更好的想法)。但更新后的代码只输出文本文件。我想我必须使用select-object或fommat-object错误,但我不知道如何解决它。
get-wmiobject win32_process |
where{$_.name -like "*notepad*"}|sort {$_.CommandLine}|
%{
$split = $_.CommandLine.split("\")
select @{n="User";e={$_.getowner().user}},@{n="ProcessID";e={$_.ProcessID}},@{n="Ihub";e=$split[3]},@{n="version";e=$split[3]},@{n="version";e=$split[3]} |
ft -AutoSize |Out-String -Width 300 >> C:\ListUsers.txt
}
任何人都可以提供建议吗?谢谢!
答案 0 :(得分:0)
您无需使用select
,然后format-table
。 Format-table
也可以创建计算属性。此外,您忘记将$split[3]
包装在一个scriptblock中。我删除了两个“版本”属性,因为它们与“Ihub”相同。
试试这个(未经测试):
get-wmiobject win32_process |
where{$_.name -like "*notepad*"}|sort {$_.CommandLine} |
Format-Table -Property @{n="User";e={$_.getowner().user}},@{n="ProcessID";e={$_.ProcessID}},@{n="Ihub";e={($_.CommandLine.split("\"))[3]}} -AutoSize |
Out-String -Width 300 >> ListUsers.txt