收集系统进程 IO 详细信息
Posted
技术标签:
【中文标题】收集系统进程 IO 详细信息【英文标题】:Gathering System Process IO details 【发布时间】:2020-06-09 00:39:54 【问题描述】:我正在尝试准备一份报告,其中我需要收集系统上运行的所有进程的 I/O 读取、写入和其他字节。下面是我目前使用的脚本。
Get-Process|select name,cpu,@name="WorkingSet";Expression=$_.WorkingSet/1kb,BasePriority,path|where $_.Name -in 'dllhost','firefox','dsapi'
下面是我们经过一些处理和测量对象得到的输出。
我面临的问题是,对于大多数系统进程或用户名是 system 的情况,这些值的返回值大多以 zero 的形式返回。请提供一些有关如何解决此问题并获得系统进程实际值的指导。
从我读到的 I/O 值不会从 get-process cmdlet 中提取,这就是为什么我使用下面的 cmdlet 并且它适用于用户创建的进程但是对于系统创建的进程,脚本返回一个零值如上图所示。
$gc = get-counter '\Process(dllhost)\IO Read Bytes/sec'
$gc.countersamples | sort cookedvalue
【问题讨论】:
【参考方案1】:确保您以管理员身份运行 powershell。
据我所知,没有 ReadByteSec 或 WriteBytpeSec。 您还使用了不包含这些属性的 select 语句。
键入此以查看 dllhost 的所有可用属性:
$processes = Get-Process | where $_.Name -in 'dllhost'
Get-Member -InputObject $processes[0]
然后将这些添加到您的声明中:
Get-Process|select name,cpu,@name="WorkingSet";Expression=$.WorkingSet/1kb,BasePriority,path, *BytesField1, BytesField2, etc* |where $.Name -in 'dllhost','firefox','dsapi'
【讨论】:
@OptilMysticall 我已经更新了问题。错过了从我获取 I/O 详细信息的位置添加 sn-p。请立即查看以上是关于收集系统进程 IO 详细信息的主要内容,如果未能解决你的问题,请参考以下文章