如何从PowerShell中的流程数据列表中获取单个流程数据

时间:2018-02-12 06:28:08

标签: powershell

我使用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数据。

1 个答案:

答案 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