Powershell中的_基本属性是什么?如何使用它们?

Powershell中的_基本属性是什么?如何使用它们?,powershell,wmi,wmi-query,get-wmiobject,Powershell,Wmi,Wmi Query,Get Wmiobject,例如 gwmi Win32_PerfRawData_PerfDisk_PhysicalDisk 在我们发现的属性中 PercentDiskTime 及 docs.microsoft.com上关于这个类的文档对我来说毫无意义,因为它只说明后者是“PercentDiskTime的基本值” 它们都是非常大的数字,我不知道如何将它们联系起来 我的实际问题是,我需要记录磁盘活动,格式化输出可能超过100%,因此必须使用原始值手动计算值。我在网上找到了关于这个问题的老讨论,但解决方案指向了死链接。我

例如

gwmi Win32_PerfRawData_PerfDisk_PhysicalDisk 
在我们发现的属性中

PercentDiskTime 

docs.microsoft.com上关于这个类的文档对我来说毫无意义,因为它只说明后者是“PercentDiskTime的基本值”

它们都是非常大的数字,我不知道如何将它们联系起来

我的实际问题是,我需要记录磁盘活动,格式化输出可能超过100%,因此必须使用原始值手动计算值。我在网上找到了关于这个问题的老讨论,但解决方案指向了死链接。我也找到了代码,但它不能正常工作


感谢属性
PercentDiskTime\u Base
表示用于计算格式化数据\u PerfDisk fromRawData\u PerfDisk:

说明:此计数器类型显示一个由两个计数器值组成的值:正在处理的事件的已用时间计数 监控,和“时钟”时间从一个私人定时器在同一时间 单位。它以100纳秒为单位测量时间

此计数器类型与其他计数器计时器的不同之处在于时钟 勾号值伴随计数器值,消除任何可能的错误 由于函数调用的延迟而产生的差异。精密计数器 当标准系统计时器不够精确时,使用类型 准确的读数

通用类型:百分比

公式
NX–N0/D1–D0
,其中分子(
N
)表示计数器值,分母(
D
)表示计数器值 私人定时器。专用定时器的频率与100纳秒相同 计时器

平均值
NX–N0/D1–D0

示例
物理磁盘\%磁盘时间

有关详细信息和解释,让我们开始分析以下属性(抱歉,Microsoft不再定期更新链接内容):

发件人: PercentDiskTime:数据类型:
uint64
,访问类型:只读

限定符:(542573824),默认量表(0),(100)

所选磁盘驱动器忙的已用时间百分比 为读或写请求提供服务

百分比DiskTime\u Base:数据类型:
uint64
,访问类型:只读

限定符:(10739712),默认量表(0),(100)

PercentDiskTime
的基值

请注意:

  • DefaultScale(
    sint32
    )=用于显示计数器的10倍幂。对于零,估计最大值为
    10^0
    ,或
    1
    ,并且
  • PerfDetail(
    sint32
    )=受众的知识水平。没有用。该值始终为
    100
发件人: PercentDiskTime:数据类型:
uint64
,访问类型:只读

限定符:CookingType(“”),计数器(“PercentDiskTime”),PerfTimeStamp(“TimeStamp_Sys100NS”), PerfTimeRequest(“频率\系统100ns”),基数(“百分比磁盘时间\基数”)

所选磁盘驱动器忙的已用时间百分比 为读或写请求提供服务

也来看看吧

一个简单的用法示例

$xxx = Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk
$x0 = $xxx | Where-Object Name -eq '_Total' |
    Select-Object -Property Name, PercentDiskTime* 
$x0
Start-Sleep -Seconds 1
$xxx = Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk
$xN = $xxx | Where-Object Name -eq '_Total' |
    Select-Object -Property Name, PercentDiskTime*
'----'
$xn
'----'
$FormattedPercentDiskTime = ( $xn.PercentDiskTime      - $x0.PercentDiskTime      ) / 
                            ( $xn.PercentDiskTime_Base - $x0.PercentDiskTime_Base )
100*$FormattedPercentDiskTime             # not sure about the `100*` multiplier
输出
D:\PShell\SO\58712142.ps1

$xxx = Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk
$x0 = $xxx | Where-Object Name -eq '_Total' |
    Select-Object -Property Name, PercentDiskTime* 
$x0
Start-Sleep -Seconds 1
$xxx = Get-WmiObject Win32_PerfRawData_PerfDisk_PhysicalDisk
$xN = $xxx | Where-Object Name -eq '_Total' |
    Select-Object -Property Name, PercentDiskTime*
'----'
$xn
'----'
$FormattedPercentDiskTime = ( $xn.PercentDiskTime      - $x0.PercentDiskTime      ) / 
                            ( $xn.PercentDiskTime_Base - $x0.PercentDiskTime_Base )
100*$FormattedPercentDiskTime             # not sure about the `100*` multiplier
Name   PercentDiskTime PercentDiskTime_Base
----   --------------- --------------------
_Total      2863146220   132202140117518636
----
_Total      2863151515   132202140128078551
----
0,0501424490632737