0

我正在尝试做的是查看一些进程并获取这些进程的用户列表。下面的代码对我来说很好。

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
}

任何人都可以建议吗?谢谢!!

4

1 回答 1

0

你不需要使用selectthen format-tableFormat-table也可以创建计算属性。此外,您忘记将 包装$split[3]在脚本块中。我删除了两个“版本”属性,因为它们与“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
于 2013-02-26T07:50:47.493 回答