[玩转系统] Get-Counter (Microsoft.PowerShell.Diagnostics)
作者:精品下载站 日期:2024-12-14 02:13:33 浏览:15 分类:玩电脑
Get-Counter (Microsoft.PowerShell.Diagnostics)
Get-Counter
模块 :Microsoft.PowerShell.Diagnostics从本地和远程计算机获取性能计数器数据。
句法
Get-Counter
[[-Counter] <String[]>]
[-SampleInterval <Int32>]
[-MaxSamples <Int64>]
[-Continuous]
[-ComputerName <String[]>]
[<CommonParameters>]
Get-Counter
[-ListSet] <String[]>
[-ComputerName <String[]>]
[<CommonParameters>]
描述
此 cmdlet 仅适用于 Windows 平台。
Get-Counter
cmdlet 直接从 Windows 系列操作系统中的性能监视工具获取性能计数器数据。 Get-Counter
从本地计算机或远程计算机获取性能数据。
您可以使用 Get-Counter
参数指定一台或多台计算机、列出性能计数器集及其包含的实例、设置采样间隔并指定最大采样数。如果没有参数,Get-Counter
会获取一组系统计数器的性能计数器数据。
许多计数器集都受访问控制列表 (ACL) 的保护。要查看所有计数器集,请使用以管理员身份运行选项打开 PowerShell。
此 cmdlet 在 PowerShell 7 中重新引入。
笔记
性能计数器名称已本地化。此处显示的示例使用性能对象、计数器和实例的英文名称。在使用另一种语言的系统上,名称会有所不同。使用 Get-Counter -ListSet
命令查看本地化名称。
示例
示例1:获取计数器设置列表
此示例获取本地计算机的计数器集列表。
Get-Counter -ListSet *
CounterSetName : Processor
MachineName : .
CounterSetType : MultiInstance
Description : The Processor performance object consists of counters that measure aspects ...
computer that performs arithmetic and logical computations, initiates ...
computer can have multiple processors. The processor object represents ...
Paths : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
PathsWithInstances : {\Processor(0)\% Processor Time, \Processor(1)\% Processor Time, ...
Counter : {\Processor(*)\% Processor Time, \Processor(*)\% User Time, ...
Get-Counter
使用带有星号 (*
) 的 ListSet 参数来获取计数器集的列表。 MachineName 列中的点 (.
) 代表本地计算机。
示例 2:指定 SampleInterval 和 MaxSamples
此示例获取本地计算机上所有处理器的计数器数据。以两秒的间隔收集数据,直到出现三个样本。
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -SampleInterval 2 -MaxSamples 3
Timestamp CounterSamples
--------- --------------
6/18/2019 14:39:56 \Computer01\processor(_total)\% processor time :
20.7144271584086
6/18/2019 14:39:58 \Computer01\processor(_total)\% processor time :
10.4391790575511
6/18/2019 14:40:01 \Computer01\processor(_total)\% processor time :
37.5968799396998
Get-Counter
使用 Counter 参数指定计数器路径 \Processor(_Total)\% Processor Time
。 SampleInterval 参数设置检查计数器的两秒间隔。 MaxSamples 确定检查计数器的最大次数为 3。
示例 3:获取计数器的连续样本
此示例每秒为计数器获取连续样本。要停止该命令,请按 CTRL+C。要指定较长的采样间隔,请使用 SampleInterval 参数。
Get-Counter -Counter "\Processor(_Total)\% Processor Time" -Continuous
Timestamp CounterSamples
--------- --------------
6/19/2019 15:35:03 \Computer01\processor(_total)\% processor time :
43.8522842937022
6/19/2019 15:35:04 \Computer01\processor(_total)\% processor time :
29.7896844697383
6/19/2019 15:35:05 \Computer01\processor(_total)\% processor time :
29.4962645638135
6/19/2019 15:35:06 \Computer01\processor(_total)\% processor time :
25.5901500127408
Get-Counter
使用Counter 参数指定\Processor\% Processor Time
计数器。 连续 参数指定每秒获取样本,直到使用 CTRL+C 停止命令。
示例 4:按字母顺序排列的计数器集列表
此示例使用管道获取计数器列表集,然后按字母顺序对列表进行排序。
Get-Counter -ListSet * |
Sort-Object -Property CounterSetName |
Format-Table CounterSetName, CounterSetType -AutoSize
CounterSetName CounterSetType
-------------- --------------
.NET CLR Data SingleInstance
.NET Data Provider for SqlServer SingleInstance
AppV Client Streamed Data Percentage SingleInstance
Authorization Manager Applications SingleInstance
BitLocker MultiInstance
Bluetooth Device SingleInstance
Cache SingleInstance
Client Side Caching SingleInstance
Get-Counter
使用带有星号 (*
) 的 ListSet 参数来获取计数器集的完整列表。 CounterSet 对象沿着管道发送。 Sort-Object
使用Property 参数指定对象按CounterSetName 排序。这些对象沿着管道发送到Format-Table
。 AutoSize 参数调整列宽以最大程度地减少截断。
MachineName 列中的点 (.
) 代表本地计算机。
示例 5:运行后台作业以获取计数器数据
在此示例中,Start-Job
将 Get-Counter
命令作为本地计算机上的后台作业运行。要查看作业的性能计数器输出,请使用 Receive-Job cmdlet。
Start-Job -ScriptBlock {Get-Counter -Counter "\LogicalDisk(_Total)\% Free Space" -MaxSamples 1000}
Id Name PSJobTypeName State HasMoreData Location Command
-- ---- ------------- ----- ----------- -------- -------
1 Job1 BackgroundJob Running True localhost Get-Counter -Counter
Start-Job
使用ScriptBlock 参数来运行Get-Counter
命令。 Get-Counter
使用Counter 参数指定计数器路径\LogicalDisk(_Total)\% Free Space
。 MaxSamples 参数指定获取计数器的 1000 个样本。
示例 6:从多台计算机获取计数器数据
此示例使用变量从两台计算机获取性能计数器数据。
$DiskReads = "\LogicalDisk(C:)\Disk Reads/sec"
$DiskReads | Get-Counter -ComputerName Server01, Server02 -MaxSamples 10
Timestamp CounterSamples
--------- --------------
6/21/2019 10:51:04 \Server01\logicaldisk(c:)\disk reads/sec :
0
\Server02\logicaldisk(c:)\disk reads/sec :
0.983050344269146
$DiskReads
变量存储 \LogicalDisk(C:)\Disk Reads/sec
计数器路径。 $DiskReads
变量沿着管道发送到 Get-Counter
。 Counter 是第一个位置参数,接受存储在 $DiskReads
中的路径。 ComputerName 指定两台计算机,MaxSamples 指定从每台计算机获取 10 个样本。
示例 7:从多台随机计算机获取计数器的实例值
此示例获取企业中 50 台随机远程计算机上的性能计数器的值。 ComputerName 参数使用存储在变量中的随机计算机名称。要更新变量中的计算机名称,请重新创建该变量。
ComputerName 参数中服务器名称的替代方法是使用文本文件。例如:
-ComputerName (Get-Random (Get-Content -Path C:\Servers.txt) -Count 50)
计数器路径在实例名称中包含星号 (*
),以获取每个远程计算机处理器的数据。
$Servers = Get-Random (Get-Content -Path C:\Servers.txt) -Count 50
$Counter = "\Processor(*)\% Processor Time"
Get-Counter -Counter $Counter -ComputerName $Servers
Timestamp CounterSamples
--------- --------------
6/20/2019 12:20:35 \Server01\processor(0)\% processor time :
6.52610319637854
\Server01\processor(1)\% processor time :
3.41030663625782
\Server01\processor(2)\% processor time :
9.64189975649925
\Server01\processor(3)\% processor time :
1.85240835619747
\Server01\processor(_total)\% processor time :
5.35768447160776
Get-Random
cmdlet 使用 Get-Content
从 Servers.txt
文件中选择 50 个随机计算机名称。远程计算机名称存储在 $Servers
变量中。 \Processor(*)\% Processor Time
计数器的路径存储在$Counter
变量中。 Get-Counter
使用 Counter 参数指定 $Counter
变量中的计数器。 ComputerName 参数指定 $Servers
变量中的计算机名称。
示例 8:使用 Path 属性获取格式化的路径名
此示例使用计数器集的 Path 属性来查找性能计数器的格式化路径名称。
该管道与 Where-Object
cmdlet 一起使用来查找路径名的子集。要查找计数器集计数器路径的完整列表,请删除管道 (|
) 和 Where-Object
命令。
$_
是管道中当前对象的自动变量。有关详细信息,请参阅 about_Automatic_Variables。
(Get-Counter -ListSet Memory).Paths | Where-Object { $_ -like "*Cache*" }
\Memory\Cache Faults/sec
\Memory\Cache Bytes
\Memory\Cache Bytes Peak
\Memory\System Cache Resident Bytes
\Memory\Standby Cache Reserve Bytes
\Memory\Standby Cache Normal Priority Bytes
\Memory\Standby Cache Core Bytes
\Memory\Long-Term Average Standby Cache Lifetime (s)
Get-Counter
使用ListSet 参数指定内存 计数器集。该命令括在括号中,以便 Paths 属性将每个路径作为字符串返回。对象沿着管道发送到 Where-Object
。 Where-Object
使用变量 $_
处理每个对象,并使用 -like
运算符查找字符串 *Cache 的匹配项*
。星号 (*
) 是任何字符的通配符。
示例 9:使用 PathsWithInstances 属性获取格式化的路径名
此示例获取包含 PhysicalDisk 性能计数器实例的格式化路径名。
(Get-Counter -ListSet PhysicalDisk).PathsWithInstances
\PhysicalDisk(0 C:)\Current Disk Queue Length
\PhysicalDisk(_Total)\Current Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Time
\PhysicalDisk(_Total)\% Disk Time
\PhysicalDisk(0 C:)\Avg. Disk Queue Length
\PhysicalDisk(_Total)\Avg. Disk Queue Length
\PhysicalDisk(0 C:)\% Disk Read Time
\PhysicalDisk(_Total)\% Disk Read Time
Get-Counter
使用ListSet 参数指定PhysicalDisk 计数器集。该命令括在括号中,以便 PathsWithInstances 属性将每个路径实例作为字符串返回。
示例 10:为计数器集中的每个计数器获取单个值
在此示例中,为本地计算机的内存计数器集中的每个性能计数器返回单个值。
$MemCounters = (Get-Counter -ListSet Memory).Paths
Get-Counter -Counter $MemCounters
Timestamp CounterSamples
--------- --------------
6/19/2019 12:05:00 \Computer01\memory\page faults/sec :
868.772077545597
\Computer01\memory\available bytes :
9031176192
\Computer01\memory\committed bytes :
8242982912
\Computer01\memory\commit limit :
19603333120
Get-Counter
使用ListSet 参数指定内存 计数器集。该命令括在括号中,以便 Paths 属性将每个路径作为字符串返回。路径存储在 $MemCounters
变量中。 Get-Counter
使用 Counter 参数指定 $MemCounters
变量中的计数器路径。
示例 11:显示对象的属性值
PerformanceCounterSample 对象中的属性值代表每个数据样本。在此示例中,我们使用 CounterSamples 对象的属性来检查、选择、排序和分组数据。
$Counter = "\Server01\Process(Idle)\% Processor Time"
$Data = Get-Counter $Counter
$Data.CounterSamples | Format-List -Property *
Path : \Server01\process(idle)\% processor time
InstanceName : idle
CookedValue : 198.467899571389
RawValue : 14329160321003
SecondValue : 128606459528326201
MultipleCount : 1
CounterType : Timer100Ns
Timestamp : 6/19/2019 12:20:49
Timestamp100NSec : 128606207528320000
Status : 0
DefaultScale : 0
TimeBase : 10000000
计数器路径存储在 $Counter
变量中。 Get-Counter
获取计数器值的一个样本,并将结果存储在 $Data
变量中。 $Data
变量使用 CounterSamples 属性来获取对象的属性。该对象沿着管道发送到Format-List
。 Property 参数使用星号 (*
) 通配符来选择所有属性。
示例 12:性能计数器数组值
在此示例中,变量存储每个性能计数器。 CounterSamples 属性是一个可以显示特定计数器值的数组。
要显示每个计数器示例,请使用 $Counter.CounterSamples
。
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples[0]
Path InstanceName CookedValue
---- ------------ -----------
\Computer01\processor(0)\% processor time 0 1.33997091699662
Get-Counter
使用Counter 参数指定计数器\Processor(*)\% Processor Time
。这些值存储在 $Counter
变量中。 $Counter.CounterSamples[0]
显示第一个计数器值的数组值。
示例 13:比较性能计数器值
此示例查找本地计算机上每个处理器使用的处理器时间量。 CounterSamples 属性用于将计数器数据与指定值进行比较。
要显示每个计数器示例,请使用 $Counter.CounterSamples
。
$Counter = Get-Counter -Counter "\Processor(*)\% Processor Time"
$Counter.CounterSamples | Where-Object { $_.CookedValue -lt "20" }
Path InstanceName CookedValue
---- ------------ -----------
\Computer01\processor(0)\% processor time 0 12.6398025240208
\Computer01\processor(1)\% processor time 1 15.7598095767344
Get-Counter
使用Counter 参数指定计数器\Processor(*)\% Processor Time
。这些值存储在 $Counter
变量中。存储在 $Counter.CounterSamples
中的对象将沿着管道发送。 Where-Object
使用脚本块将每个对象值与指定值 20
进行比较。 $_.CookedValue
是管道中当前对象的变量。显示 CookedValue 小于 20 的计数器。
示例 14:对性能计数器数据进行排序
此示例演示如何对性能计数器数据进行排序。该示例查找示例期间计算机上使用最多处理器时间的进程。
$Procs = Get-Counter -Counter "\Process(*)\% Processor Time"
$Procs.CounterSamples | Sort-Object -Property CookedValue -Descending |
Format-Table -Property Path, InstanceName, CookedValue -AutoSize
Path InstanceName CookedValue
---- ------------ -----------
\Computer01\process(_total)\% processor time _total 395.464129650573
\Computer01\process(idle)\% processor time idle 389.356575524695
\Computer01\process(mssense)\% processor time mssense 3.05377706293879
\Computer01\process(csrss#1)\% processor time csrss 1.52688853146939
\Computer01\process(microsoftedgecp#10)\% processor time microsoftedgecp 1.52688853146939
\Computer01\process(runtimebroker#5)\% processor time runtimebroker 0
\Computer01\process(settingsynchost)\% processor time settingsynchost 0
\Computer01\process(microsoftedgecp#16)\% processor time microsoftedgecp 0
Get-Counter
使用Counter 参数指定本地计算机上所有进程的\Process(*)\% Processor Time
计数器。结果存储在 $Procs
变量中。具有 CounterSamples 属性的 $Procs
变量将 PerformanceCounterSample 对象发送到管道中。 Sort-Object
使用Property 参数按CookedValue 按降序 顺序对对象进行排序。 Format-Table
使用Property 参数来选择输出的列。 AutoSize 参数调整列宽以最大程度地减少截断。
参数
-ComputerName
指定一台计算机名称或一组以逗号分隔的远程计算机名称。使用 NetBIOS 名称、IP 地址或计算机的完全限定域名。
要从本地计算机获取性能计数器数据,请排除ComputerName参数。对于包含 MachineName 列的 ListSet 等输出,点 (.
) 表示本地计算机。
Get-Counter
不依赖 PowerShell 远程处理。即使您的计算机未配置为运行远程命令,您也可以使用 ComputerName 参数。
String[]
别名:Cn
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Continuous
当指定连续时,Get-Counter
会获取样本,直到您按CTRL+C。每秒为每个指定的性能计数器获取样本。使用SampleInterval参数可以增加连续样本之间的间隔。
SwitchParameter
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-Counter
指定一个或多个计数器路径的路径。路径以逗号分隔的数组、变量或文本文件中的值的形式输入。您可以将计数器路径字符串沿着管道发送到 Get-Counter
。
计数器路径使用以下语法:
\ComputerName\CounterSet(Instance)\CounterName
\CounterSet(Instance)\CounterName
例如:
\Server01\Processor(*)\% User Time
\Processor(*)\% User Time
\ComputerName
在性能计数器路径中是可选的。如果计数器路径不包含计算机名称,Get-Counter
将使用本地计算机。
实例中的星号 (*
) 是通配符,用于获取计数器的所有实例。
String[]
位置:0
默认值:None
必需的:False
接受管道输入:True
接受通配符:True
-ListSet
列出计算机上的性能计数器集。使用星号 (*
) 指定所有计数器集。输入一个名称或一串以逗号分隔的计数器集名称。您可以沿着管道发送计数器集名称。
要获取计数器集格式化的计数器路径,请使用 ListSet 参数。每个计数器集的 Paths 和 PathsWithInstances 属性包含格式化为字符串的各个计数器路径。
您可以将计数器路径字符串保存在变量中,或使用管道将字符串发送到另一个 Get-Counter
命令。
例如,将每个处理器计数器路径发送到Get-Counter
:
Get-Counter -ListSet Processor | Get-Counter
笔记
在 PowerShell 7 中,Get-Counter
无法检索计数器集的 Description 属性。 描述设置为$null
。
String[]
位置:0
默认值:None
必需的:True
接受管道输入:True
接受通配符:True
-MaxSamples
指定从每个指定的性能计数器获取的样本数。要获得恒定的样本流,请使用连续参数。
如果未指定 MaxSamples 参数,Get-Counter
只会为每个指定的计数器获取一个样本。
要收集大型数据集,请将 Get-Counter
作为 PowerShell 后台作业运行。有关更多信息,请参阅 about_Jobs。
整型64
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
-SampleInterval
指定每个指定性能计数器的样本之间的秒数。如果未指定 SampleInterval 参数,Get-Counter
将使用一秒间隔。
整数32
位置:命名
默认值:None
必需的:False
接受管道输入:False
接受通配符:False
输入
字符串[]
Get-Counter
接受计数器路径和计数器集名称的管道输入。
输出
计数器设置
使用 ListSet 参数,此 cmdlet 返回 CounterSet 对象。
性能计数器样本集
默认情况下,使用 Counter 参数,此 cmdlet 返回 PerformanceCounterSampleSet 对象。
笔记
如果未指定参数,Get-Counter
将为每个指定的性能计数器获取一个样本。使用 MaxSamples 和 Continously 参数来获取更多样本。
Get-Counter
在样本之间使用一秒的间隔。使用SampleInterval参数来增加间隔。
MaxSamples 和 SampleInterval 值适用于命令中每台计算机上的所有计数器。要为不同的计数器设置不同的值,请输入单独的 Get-Counter
命令。
在 PowerShell 7 中,使用 ListSet 参数时,Get-Counter
无法检索计数器集的 Description 属性。 描述设置为$null
。
猜你还喜欢
- 03-30 [玩转系统] 如何用批处理实现关机,注销,重启和锁定计算机
- 02-14 [系统故障] Win10下报错:该文件没有与之关联的应用来执行该操作
- 01-07 [系统问题] Win10--解决锁屏后会断网的问题
- 01-02 [系统技巧] Windows系统如何关闭防火墙保姆式教程,超详细
- 12-15 [玩转系统] 如何在 Windows 10 和 11 上允许多个 RDP 会话
- 12-15 [玩转系统] 查找 Exchange/Microsoft 365 中不活动(未使用)的通讯组列表
- 12-15 [玩转系统] 如何在 Windows 上安装远程服务器管理工具 (RSAT)
- 12-15 [玩转系统] 如何在 Windows 上重置组策略设置
- 12-15 [玩转系统] 如何获取计算机上的本地管理员列表?
- 12-15 [玩转系统] 在 Visual Studio Code 中连接到 MS SQL Server 数据库
- 12-15 [玩转系统] 如何降级 Windows Server 版本或许可证
- 12-15 [玩转系统] 如何允许非管理员用户在 Windows 中启动/停止服务
取消回复欢迎 你 发表评论:
- 精品推荐!
-
- 最新文章
- 热门文章
- 热评文章
[影视] 黑道中人 Alto Knights(2025)剧情 犯罪 历史 电影
[古装剧] [七侠五义][全75集][WEB-MP4/76G][国语无字][1080P][焦恩俊经典]
[实用软件] 虚拟手机号 电话 验证码 注册
[电视剧] 安眠书店/你 第五季 You Season 5 (2025) 【全10集】
[电视剧] 棋士(2025) 4K 1080P【全22集】悬疑 犯罪 王宝强 陈明昊
[软件合集] 25年6月5日 精选软件22个
[软件合集] 25年6月4日 精选软件36个
[短剧] 2025年06月04日 精选+付费短剧推荐33部
[短剧] 2025年06月03日 精选+付费短剧推荐25部
[软件合集] 25年6月3日 精选软件44个
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电视剧] 欢乐颂.5部全 (2016-2024)
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[影视] 【稀有资源】香港老片 艺坛照妖镜之96应召名册 (1996)
[剧集] 神经风云(2023)(完结).4K
[剧集] [BT] [TVB] [黑夜彩虹(2003)] [全21集] [粤语中字] [TV-RMVB]
[实用软件] 虚拟手机号 电话 验证码 注册
[资源] B站充电视频合集,包含多位重量级up主,全是大佬真金白银买来的~【99GB】
[影视] 内地绝版高清录像带 [mpg]
[书籍] 古今奇书禁书三教九流资料大合集 猎奇必备珍藏资源PDF版 1.14G
[电视剧] [突围] [45集全] [WEB-MP4/每集1.5GB] [国语/内嵌中文字幕] [4K-2160P] [无水印]
[剧集] [央视][笑傲江湖][2001][DVD-RMVB][高清][40集全]李亚鹏、许晴、苗乙乙
[电影] 美国队长4 4K原盘REMUX 杜比视界 内封简繁英双语字幕 49G
[电影] 死神来了(1-6)大合集!
[软件合集] 25年05月13日 精选软件16个
[精品软件] 25年05月15日 精选软件18个
[绝版资源] 南与北 第1-2季 合集 North and South (1985) /美国/豆瓣: 8.8[1080P][中文字幕]
[软件] 25年05月14日 精选软件57个
[短剧] 2025年05月14日 精选+付费短剧推荐39部
[短剧] 2025年05月15日 精选+付费短剧推荐36部
- 最新评论
-
- 热门tag