Import-Counter
导入性能计数器日志文件并创建表示日志中的每个计数器样本的对象。
语法
Import-Counter
[-Path] <String[]>
[-StartTime <DateTime>]
[-EndTime <DateTime>]
[-Counter <String[]>]
[-MaxSamples <Int64>]
[<CommonParameters>]
Import-Counter
[-Path] <String[]>
-ListSet <String[]>
[<CommonParameters>]
Import-Counter
[-Path] <String[]>
[-Summary]
[<CommonParameters>]
说明
Import-Counter
cmdlet 从性能计数器日志文件中导入性能计数器数据并为文件中的每个计数器样本创建对象。 它创建的 PerformanceCounterSampleSet 对象与 Get-Counter
在收集性能计数器数据时返回的对象相同。
可以从逗号分隔值 (.csv
)、制表符分隔值 (.tsv
) 和二进制性能日志 (.blg
) 性能日志文件中导入数据。 如果使用 .blg
文件,则每个命令最多可导入 32 个文件。 可以使用 Import-Counter
的参数来筛选导入的数据。
通过将此功能与 Get-Counter
和 Export-Counter
cmdlet 结合使用,可在 Windows PowerShell 中收集、导出、导入、合并、筛选、操作和重新导出性能计数器数据。
示例
示例 1:从文件导入所有计数器数据
$data = Import-Counter -Path ProcessorData.csv
此命令会将所有计数器数据从 ProcessorData.csv
文件导入到 $data
变量中。
示例 2:从文件导入特定计数器数据
$i = Import-Counter -Path "ProcessorData.blg" -Counter "\\SERVER01\Processor(_Total)\Interrupts/sec"
此命令仅将 "Processor(_total)\Interrupts/sec" 计数器数据从 ProcessorData.blg
文件导入到 $i
变量中。
示例 3:从性能计数器中选择数据,然后将其导出到文件
此示例显示了如何从性能计数器日志文件 (.blg
) 中选择数据,然后将选定的数据导出到 .csv
文件中。 前四个命令将从文件中获取计数器路径并将它们保存在名为 $data
的变量中。 后两个命令导入选定的数据,然后只导出这些选定的数据。
$data = Import-Counter .\ProcessorData.blg
$data[0].CounterSamples | Format-Table -Property Path
Path
----
\\SERVER01\Processor(_Total)\DPC Rate
\\SERVER01\Processor(1)\DPC Rate
\\SERVER01\Processor(0)\DPC Rate
\\SERVER01\Processor(_Total)\% Idle Time
\\SERVER01\Processor(1)\% Idle Time
\\SERVER01\Processor(0)\% Idle Time
\\SERVER01\Processor(_Total)\% C3 Time
\\SERVER01\Processor(1)\% C3 Time
$intCtrs = $Data[0].Countersamples | Where-Object {$_.Path -like "*Interrupts/sec"} | ForEach-Object {$_.Path}
$intCtrs
\\SERVER01\Processor(_Total)\Interrupts/sec
\\SERVER01\Processor(1)\Interrupts/sec
\\SERVER01\Processor(0)\Interrupts/sec
$i = Import-Counter -Path .\ProcessorData.blg -Counter $intCtrs
$i | Export-Counter -Path .\Interrupts.csv -Format CSV
第一个命令使用 Import-Counter
来导入 ProcessorData.blg
文件中的所有性能计数器数据。 此命令将数据保存在 $data
变量中。
第二个命令显示 $data
变量中的计数器路径。 为了获得命令输出中显示的内容,该示例使用 Format-Table
cmdlet 将 $data
变量中第一个计数器的计数器路径格式化为表格。
第三个命令将获取以 Interrupts/sec
结尾的计数器路径并将路径保存在 $intCtrs
变量中。 它使用 Where-Object
cmdlet 筛选计数器路径,并使用 ForEach-Object
cmdlet 仅获取每个选定路径对象的 Path 属性的值。
第四个命令显示 $intCtrs
变量中选定的计数器路径。
第五个命令使用 Import-Counter
cmdlet 来导入数据。 它将 $intCtrs
变量用作 Counter 参数的值,以只导入 $intCtrs
中的计数器路径的数据。
第六个命令使用 Export-Counter
cmdlet 将数据导出到 Interrupts.csv
文件。
示例 4:显示一组导入的计数器集中的所有计数器路径
此示例显示了如何显示一组导入的计数器集中的所有计数器路径。
Import-Counter -Path ProcessorData.csv -ListSet *
CounterSetName : Processor
MachineName : \\SERVER01
CounterSetType : MultiInstance
Description :
Paths : {\\SERVER01\Processor(*)\DPC Rate, \\SERVER01\Processor(*)\% Idle Time, \\SERVER01
\Processor(*)\% C3 Time, \\SERVER01\Processor(*)\% Interrupt Time...}
PathsWithInstances : {\\SERVER01\Processor(_Total)\DPC Rate, \\SERVER01\Processor(1)\DPC Rate, \\SERVER01
\Processor(0)\DPC Rate, \\SERVER01\Processor(_Total)\% Idle Time...}
Counter : {\\SERVER01\Processor(*)\DPC Rate, \\SERVER01\Processor(*)\% Idle Time, \\SERVER01
\Processor(*)\% C3 Time, \\SERVER01\Processor(*)\% Interrupt Time...}
Import-Counter -Path ProcessorData.csv -ListSet * | ForEach-Object {$_.Paths}
\\SERVER01\Processor(*)\DPC Rate
\\SERVER01\Processor(*)\% Idle Time
\\SERVER01\Processor(*)\% C3 Time
\\SERVER01\Processor(*)\% Interrupt Time
\\SERVER01\Processor(*)\% C2 Time
\\SERVER01\Processor(*)\% User Time
\\SERVER01\Processor(*)\% C1 Time
\\SERVER01\Processor(*)\% Processor Time
\\SERVER01\Processor(*)\C1 Transitions/sec
\\SERVER01\Processor(*)\% DPC Time
\\SERVER01\Processor(*)\C2 Transitions/sec
\\SERVER01\Processor(*)\% Privileged Time
\\SERVER01\Processor(*)\C3 Transitions/sec
\\SERVER01\Processor(*)\DPCs Queued/sec
\\SERVER01\Processor(*)\Interrupts/sec
第一个命令使用 Import-Counter
cmdlet 的 ListSet 参数来获取计数器数据文件中所包含的所有计数器集。
第二个命令从列表集中获取所有计数器路径。
示例 5:从时间戳范围导入计数器数据
此示例只导入时间戳介于命令中指定的开始和结束范围中的计数器数据。
Import-Counter -Path ".\disk.blg" | Format-Table -Property Timestamp
$start = [datetime]"7/9/2008 3:47:00 PM"; $end = [datetime]"7/9/2008 3:47:59 PM"
Import-Counter -Path Disk.blg -StartTime $start -EndTime $end
第一个命令在表中列出 ProcessorData.blg
文件中所有数据的时间戳。
第二个命令将特定时间戳保存在 $start
和 $end
变量中。 将字符串转换为 DateTime 对象。
第三个命令使用 Import-Counter
cmdlet 以仅获取时间戳介于开始和结束时间之间(含开始和结束时间)的计数器数据。 此命令使用 Import-Counter
的 StartTime 和 EndTime 参数来指定范围。
示例 6:从性能计数器日志文件导入指定数量的最早样本
此示例显示了如何从性能计数器日志文件中导入五个最旧的样本和五个最新的样本。
Import-Counter -Path "Disk.blg" -MaxSamples 5
(Import-Counter -Path Disk.blg)[-1 .. -5]
第一个命令使用 Import-Counter
cmdlet 从 Disk.blg
文件中导入前(最旧的)五个样本。 此命令使用 MaxSamples 参数将导入的计数器样本数限制为五个。
第二个命令使用数组表示法和 Windows PowerShell 范围运算符 (..
) 来获取文件中最后五个计数器样本。 这五个样本是最新的样本。
示例 7:从文件获取计数器数据的摘要
Import-Counter "D:\Samples\Memory.blg" -Summary
OldestRecord NewestRecord SampleCount
------------ ------------ -----------
7/10/2008 2:59:18 PM 7/10/2008 3:00:27 PM 1000
此命令使用 Import-Counter
cmdlet 的 Summary 参数来获取 Memory.blg
文件中的计数器数据摘要。
示例 8:更新性能计数器日志文件
此示例更新性能计数器日志文件。
$counters = Import-Counter OldData.blg -ListSet * | ForEach-Object {$_.PathsWithInstances}
Get-Counter -Counter $Counters -MaxSamples 20 | Export-Counter C:\Logs\NewData.blg
第一个命令使用 Import-Counter
的 ListSet 参数来获取现有计数器日志文件 OldData.blg
中的计数器。 该命令使用管道运算符 (|
) 将数据发送到 ForEach-Object
命令,该命令仅获取每个对象的 PathsWithInstances 属性的值
第二个命令将获取 $counters
变量中计数器的更新的数据。 它使用 Get-Counter
cmdlet 来获取当前样本,然后将结果导出到 NewData.blg
文件中。
示例9:从多个文件导入性能日志数据然后保存
$counters = "D:\test\pdata.blg", "D:\samples\netlog.blg" | Import-Counter
此命令从两个日志中导入性能日志数据并将数据保存在 $counters
变量中。 此命令使用管道运算符将性能日志路径发送到 Import-Counter,它将从指定的路径中导入数据。
请注意,每个路径用引号引起,并且各个路径之间用逗号分隔开。
参数
-Counter
以字符串数组形式指定性能计数器。 默认情况下,Import-Counter
将导入输入文件中的所有计数器的所有数据。 输入一个或多个计数器路径。 允许在路径的 Instance 部分中使用通配符。
每个计数器路径都具有以下格式。 路径中需要 ComputerName
值。 例如:
\\<ComputerName>\<CounterSet>(<Instance>)\<CounterName>
例如:
\\Server01\Processor(2)\% User Time
\\Server01\Processor(*)\% Processor Time
Type: | String[] |
Position: | Named |
Default value: | All counter |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-EndTime
指定此 cmdlet 导入 StartTime 和此参数时间戳之间的计数器数据的结束日期和时间。 输入 DateTime 对象,例如 Get-Date
cmdlet 创建的 DateTime 对象。 默认情况下,Import-Counter
将导入 Path 参数指定的文件中的所有计数器数据。
Type: | DateTime |
Position: | Named |
Default value: | No end time |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ListSet
指定导出的文件中所包含的性能计数器集。 使用此参数的命令不会导入任何数据。
输入一个或多个计数器集名称。 允许使用通配符。 若要获取文件中的所有计数器集,请键入 Import-Counter -ListSet *
。
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | True |
-MaxSamples
指定要导入的每个计数器的样本的最大数目。 默认情况下,Get-Counter
将导入 Path 参数指定的文件中的所有数据。
Type: | Int64 |
Position: | Named |
Default value: | No maximum |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Path
指定要导入的文件的文件路径。 此参数是必需的。
输入你使用 Export-Counter
cmdlet 导出的 .csv
、.tsv
或 .blg
文件的路径和文件名。 在每个命令中只能指定一个 .csv
或 .tsv
文件,但可以指定多个 .blg
文件(最多 32 个)。 还可以通过管道将文件路径字符串(在引号中)传递给 Import-Counter
。
Type: | String[] |
Aliases: | PSPath |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | True |
-StartTime
指定此 cmdlet 获取计数器数据的开始日期和时间。 输入 DateTime 对象,例如 Get-Date
cmdlet 创建的 DateTime 对象。 默认情况下,Import-Counter
将导入 Path 参数指定的文件中的所有计数器数据。
Type: | DateTime |
Position: | Named |
Default value: | No start time |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Summary
指示此 cmdlet 获取导入数据的摘要,而不是获取单独的计数器数据样本。
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
输入
可以通过管道将性能计数器日志路径传递给此 cmdlet。
输出
Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.CounterFileInfo
此 cmdlet 将返回 Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet。 如果使用 ListSet 参数,则此 cmdlet 将返回 Microsoft.PowerShell.Commands.GetCounter.CounterSet 对象。 如果使用 Summary 参数,则此 cmdlet 将返回 Microsoft.PowerShell.Commands.GetCounter.CounterFileInfo 对象。
备注
- 此 cmdlet 不具有 ComputerName 参数。 但是,如果计算机针对 Windows PowerShell 远程处理进行了配置,则你可以使用
Invoke-Command
cmdlet 在远程计算机上运行Import-Counter
命令。
相关链接
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈