我使用PowerShell中的以下脚本获取进程名称,用户名,处理时间
$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}
$data = @{}
get-process | select processname,Id,PrivilegedProcessorTime,UserProcessorTime,@{l="Owner";e={$owners[$_.id.tostring()]}}
它将数据作为
ProcessName : UpdaterUI
Id : 6824
PrivilegedProcessorTime : 00:00:04.6332297
UserProcessorTime : 00:00:04.1964269
Owner : VM82958
我想获取个别流程的数据,我尝试了下面的代码
foreach($val in $data) {
$processname = $val.ProcessName
$processname = $val.Owner
$processname = $val.PrivilegedProcessorTime
$processname = $val.UserProcessorTime
}
但我没有得到任何信息。任何人都可以帮助我如何获取单个过程数据的信息,以及TotalMilliseconds中的PrivilegedProcessorTime,UserProcessorTime数据。
答案 0 :(得分:1)
你快到了。只需将结果分配给$data
:
$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}
$data = get-process | select processname,Id,PrivilegedProcessorTime,UserProcessorTime,@{l="Owner";e={$owners[$_.id.tostring()]}}
在第一个示例中,您在$owners
管道(别名ForEach-Object
)中填充哈希表%
。而你不会在任何地方填充$data
。