格式表输出空白?

时间:2013-02-26 02:48:23

标签: powershell

我要做的是查看一些流程并获取这些流程的用户列表。以下代码对我来说很好。

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
}

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

1 个答案:

答案 0 :(得分:0)

您无需使用select,然后format-tableFormat-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