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 来仅获取在开始时间和结束时间之间具有时间戳(含)的计数器数据。 该命令使用 StartTime 和 EndTime 参数 Import-Counter
指定范围。
示例 6:从性能计数器日志文件导入指定数量的最早示例
此示例演示如何从性能计数器日志文件导入 5 个最早和 5 个最新示例。
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
从输入文件中的所有计数器导入所有数据。 输入一个或多个计数器路径。 允许在路径的实例部分中使用通配符。
每个计数器路径具有以下格式。 路径中需要 ComputerName
值。 例如:
\\<ComputerName>\<CounterSet>(<Instance>)\<CounterName>
例如:
\\Server01\Processor(2)\% User Time
\\Server01\Processor(*)\% Processor Time
类型: | String[] |
Position: | Named |
默认值: | All counter |
必需: | False |
接受管道输入: | False |
接受通配符: | True |
-EndTime
指定此 cmdlet 在 StartTime 和此参数时间戳之间导入计数器数据的结束日期和时间。 输入 DateTime 对象,例如由 Get-Date
cmdlet 创建的对象。 默认情况下,Import-Counter
导入由 Path 参数指定的文件中的所有计数器数据。
类型: | DateTime |
Position: | Named |
默认值: | No end time |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-ListSet
指定导出文件中表示的性能计数器集。 具有此参数的命令不会导入任何数据。
输入一个或多个计数器集名称。 允许通配符。 若要获取文件中的所有计数器集,请键入 Import-Counter -ListSet *
。
类型: | String[] |
Position: | Named |
默认值: | None |
必需: | True |
接受管道输入: | False |
接受通配符: | True |
-MaxSamples
指定要导入的每个计数器的最大样本数。 默认情况下,Get-Counter
导入由 Path 参数指定的文件中的所有数据。
类型: | Int64 |
Position: | Named |
默认值: | No maximum |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Path
指定要导入的文件的文件路径。 此参数是必需的。
输入使用 Export-Counter
cmdlet 导出的 .csv
、.tsv
或 .blg
文件的路径和文件名。 只能指定一个 .csv
或 .tsv
文件,但可以在每个命令中指定多个 .blg
文件(最多 32 个)。 还可以通过管道将文件路径字符串(以引号为单位)传递给 Import-Counter
。
类型: | String[] |
别名: | PSPath |
Position: | 1 |
默认值: | None |
必需: | True |
接受管道输入: | True |
接受通配符: | True |
-StartTime
指定此 cmdlet 获取计数器数据的开始日期和时间。 输入 DateTime 对象,例如由 Get-Date
cmdlet 创建的对象。 默认情况下,Import-Counter
导入由 Path 参数指定的文件中的所有计数器数据。
类型: | DateTime |
Position: | Named |
默认值: | No start time |
必需: | False |
接受管道输入: | False |
接受通配符: | False |
-Summary
指示此 cmdlet 获取导入数据的摘要,而不是获取单个计数器数据示例。
类型: | SwitchParameter |
Position: | Named |
默认值: | False |
必需: | False |
接受管道输入: | False |
接受通配符: | 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
命令。