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(
)=用于显示计数器的10倍幂。对于零,估计最大值为sint32
,或10^0
,并且1
- PerfDetail(
)=受众的知识水平。没有用。该值始终为sint32
100
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