我正在尝试对脚本进行排序,该脚本将检索进程的所有实例以及进程的各个所有者。
我有一个脚本来获取进程名称和开始时间:
get-process -name notepad | select-object starttime,name
我有一个脚本来获取进程所有者:
$process = (Get-CimInstance Win32_Process -Filter "name = 'notepad.exe'")
$owner = Invoke-CimMethod -InputObject $process -MethodName GetOwner | select user | ft -HideTableHeaders
然而,当我创建一个属性并将它们放在一起时,我得到一个我几乎肯定与格式相关的结果:
$process = (Get-CimInstance Win32_Process -Filter "name = 'notepad.exe'")
$owner = Invoke-CimMethod -InputObject $process -MethodName GetOwner | select user | ft -HideTableHeaders
get-process -name notepad | select-object starttime,name,@{n='Owner';e={$owner}}
结果:
StartTime Name Owner
--------- ---- -----
31/01/2017 14:44:57 notepad {Microsoft.PowerShell.Commands.Internal.Format.FormatStartData, Mic...
从阅读开始,它似乎与$ owner的格式化,但我不能为我的生活弄明白。有什么想法吗?
答案 0 :(得分:3)
Format-Table
将您的对象转换为格式化字符串,这对于显示和输出到文本文件非常有用,会弄乱您想要传递的任何对象。所以要小心任何格式命令。此外,您可能希望展开users
属性。
$process = (Get-CimInstance Win32_Process -Filter "name = 'notepad.exe'")
$owner = Invoke-CimMethod -InputObject $process -MethodName GetOwner | select -ExpandProperty user
get-process -name notepad | select-object starttime,name,@{n='Owner';e={$owner}}
答案 1 :(得分:0)
试试这个:
tasklist /v /fi "imagename eq notepad.exe" /fo csv | convertfrom-csv | ogv