0

私がやろうとしているのは、いくつかのプロセスを見て、これらのプロセスのユーザーのリストを取得することです。Aそして、次のコードは私にとってはうまくいきました。

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

selectand thenを使用する必要はありませんformat-tableFormat-table計算されたプロパティも作成できます。また、スクリプトブロックでラップするのを忘れてい$split[3]ました。2 つの「バージョン」プロパティは「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 に答える