如何从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
}

但我没有得到任何信息。任何人都可以帮助我如何获取单个流程数据的信息,以及ProperegedProcestime,TotalMilliseConds中的用户ProPersOrcestime数据。

您几乎在那里。只是分配结果 $data

$owners = @{}
gwmi win32_process |% {$owners[$_.handle] = $_.getowner().user}
$data = get-process | select processname,Id,PrivilegedProcessorTime,UserProcessorTime,@{l="Owner";e={$owners[$_.id.tostring()]}}

在第一个示例中,您填充了ForEach-Object管道中的hashtable $owners(别名%(。而您在任何地方都不会填充$data

最新更新