Import-Counter
导入性能计数器日志文件(.blg、.csv、.tsv)并创建表示日志中的每个计数器样本的对象。
语法
Import-Counter [-Path] <string[]> [-Counter <string[]>] [-EndTime <DateTime>] [-MaxSamples <Int64>] [-StartTime <DateTime>] [<CommonParameters>]
Import-Counter [-Path] <string[]> -ListSet <string[]> [<CommonParameters>]
Import-Counter [-Path] <string[]> -Summary <switch> [<CommonParameters>]
说明
Import-Counter cmdlet 从性能计数器日志文件中导入性能计数器数据并为文件中的每个计数器样本创建对象。它创建的 PerformanceCounterSampleSet 对象与 Get-Counter 在收集性能计数器数据时返回的对象相同。
可以从逗号分隔值 (.csv)、制表符分隔值 (.tsv) 和二进制性能日志 (.blg) 性能日志文件中导入数据。如果使用的是 .blg 文件,则可以在每个命令中导入多个文件(最多可导入 32 个不同文件)。并且可以使用 Import-Counter 的参数来筛选导入的数据。
此功能与 Get-Counter 和 Export-Counter 结合使用,使您能够在 Windows PowerShell 中收集、导出、导入、合并、筛选、操作和重新导出性能计数器数据。
参数
-Counter <string[]>
只导入指定的性能计数器的数据。默认情况下,Import-Counter 导入输入文件中的所有计数器的所有数据。输入一个或多个计数器路径。允许在路径的 Instance 部分中使用通配符。
每个计数器路径具有以下格式。请注意,ComputerName 值在路径中是必需的,即使在本地计算机上,也是如此。
"\\<ComputerName>\<CounterSet>(<Instance>)\<CounterName>"
例如:
"\\Server01\Processor(2)\% User Time"
"\Processor(*)\% Processor Time
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
true |
-EndTime <DateTime>
只导入时间戳小于或等于指定的日期和时间的计数器数据。输入 DateTime 对象,例如 Get-Date cmdlet 创建的 DateTime 对象。默认情况下,Import-Counter 导入 Path 参数指定的文件中的所有计数器数据。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-ListSet <string[]>
获取导出的文件中所包含的性能计数器集。使用此参数的命令不会导入任何数据。
输入一个或多个计数器集名称。允许使用通配符。要获取文件中的所有计数器集,请键入“import-counter -listset *”。
是否为必需? |
true |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
true |
-MaxSamples <Int64>
指定要导入的每个计数器的样本的最大数目。默认情况下,Get-Counter 导入 Path 参数指定的文件中的所有数据。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-Path <string[]>
指定要导入的文件的文件路径。此参数是必需的。
输入您使用 Export-Counter cmdlet 导出的 .csv、.tsv 或 .blg 文件的路径和文件名。在每个命令中只能指定一个 .csv 或 .tsv 文件,但可以指定多个 .blg 文件(最多 32 个)。还可以将文件路径字符串(引号中)通过管道传送到 Import-Counter。
是否为必需? |
true |
位置? |
2 |
默认值 |
|
是否接受管道输入? |
true (ByValue) |
是否接受通配符? |
true |
-StartTime <DateTime>
只导入时间戳大于或等于指定的日期和时间的计数器数据。输入 DateTime 对象,例如 Get-Date cmdlet 创建的 DateTime 对象。默认情况下,Import-Counter 导入 Path 参数指定的文件中的所有计数器数据。
是否为必需? |
false |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
-摘要 <switch>
获取导入的数据的摘要,而不是获取各个计数器数据样本。
是否为必需? |
true |
位置? |
named |
默认值 |
|
是否接受管道输入? |
false |
是否接受通配符? |
false |
<CommonParameters>
此 cmdlet 支持通用参数:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。有关详细信息,请参阅 about_Commonparameters.
输入和输出
输入类型是指可通过管道传递给 cmdlet 的对象的类型。返回类型是指 Cmdlet 所返回对象的类型。
输入 |
System.String 可以将性能计数器日志路径通过管道传送到 Import-Counter。 |
输出 |
Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet, Microsoft.PowerShell.Commands.GetCounter.CounterSet, Microsoft.PowerShell.Commands.GetCounter.CounterFileInfo 默认情况下,Import-Counter 返回 Microsoft.PowerShell.Commands.GetCounter.PerformanceCounterSampleSet。如果使用 ListSet 参数,则 Import-Command 返回 Microsoft.PowerShell.Commands.GetCounter.CounterSet 对象。如果使用 Summary 参数,则 Import-Command 返回 Microsoft.PowerShell.Commands.GetCounter.CounterFileInfo 对象。 |
说明
Import-Counter cmdlet 没有 ComputerName 参数。但是,如果已对计算机进行相应配置以进行 Windows PowerShell 远程处理,则可以使用 Invoke-Command cmdlet 来对远程计算机运行 Import-Counter 命令。
示例 1
C:\PS># Import-Counter
说明
-----------
此命令将 ProcessorData.csv 文件中的所有计数器数据导入到 $data 变量中。
C:\PS> $data = import-counter -path ProcessorData.csv
示例 2
C:\PS># Import-Counter
说明
-----------
此命令只将 ProcessorData.blg 文件中的 Processor(_total)\Interrupts\sec 计数器数据导入到 $i 变量中。
C:\PS> $i = import-counter -path ProcessorData.blg -counter "\\SERVER01\Processor(_Total)\Interrupts/sec"
示例 3
C:\PS># Import-Counter
说明
-----------
此示例演示如何从性能计数器日志文件 (.blg) 中选择数据,然后将选定的数据导出到 .csv 文件中。
前四个命令从文件中获取计数器路径并将它们保存在变量中。后两个命令导入选择的数据,然后只导出选择的数据。
第一个命令使用 Import-Counter 来导入 ProcessorData.blg 文件中的所有性能计数器数据。此命令将数据保存在 $data 变量中。
C:\PS> $data = import-counter .\processordata.blg
第二个命令显示 $data 变量中的计数器路径。命令输出中展示了此显示内容。
C:\PS> $data[0].countersamples | format-table 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
...
第三个命令获取以“Interrupts/sec”结尾的计数器路径并将路径保存在 $IntCtrs 变量中。
C:\PS> $IntCtrs = $data[0].countersamples | where {$_.path -like "*interrupts/sec"} | foreach {$_.path}
第四个命令显示选择的计数器路径。
C:\PS> $IntCtrs
\\SERVER01\Processor(_Total)\Interrupts/sec
\\SERVER01\Processor(1)\Interrupts/sec
\\SERVER01\Processor(0)\Interrupts/sec
第五个命令使用 Import-Counter cmdlet 来导入数据。它使用 Counter 参数和 $IntCtrs 变量来只导入 $IntCtrs 中的计数器路径的数据。
C:\PS> $i = import-counter -path .\processordata.blg -counter $intCtrs
第六个命令使用 Export-Counter cmdlet 来导出数据。
C:\PS> $i | export-counter -path .\interrupts.csv -format CSV
示例 4
C:\PS># Import-Counter
说明
-----------
此示例演示如何显示一组导入的计数器集中的所有计数器路径。
第一个命令使用 ListSet 参数来获取计数器数据文件中所包含的所有计数器集。
C:\PS> 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...}
第二个命令从列表集中获取所有计数器路径。
C:\PS> import-counter -path processordata.csv -listset * | foreach {$_.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
示例 5
C:\PS># Import-Counter
说明
-----------
此示例只导入时间戳介于命令中指定的开始和结束范围中的计数器数据。
第一个命令列出 ProcessorData.blg 文件中所有数据的时间戳。
C:\PS> import-counter -path .\disk.blg | format-table timestamp
第二个和第三个命令将特定时间戳保存在 $start 和 $end 变量中。将字符串转换为 DateTime 对象。
C:\PS> $start = [datetime]"7/9/2008 3:47:00 PM"
C:\PS> $end = [datetime]"7/9/2008 3:47:59 PM"
第四个命令使用 Import-Counter 来只获取时间戳介于开始和结束时间之间(含开始和结束时间)的计数器数据。此命令使用 StartTime 和 EndTime 参数来指定范围。
C:\PS> $t-data = import-counter -path disk.blg -starttime $start -endtime $end
示例 6
C:\PS># Import-Counter
说明
-----------
此示例演示如何从性能计数器日志文件中导入五个最旧的样本和五个最新的样本。
第一个命令使用 Import-Counter cmdlet 从 Disk.blg 文件中导入数据。此命令使用 MaxSamples 参数将导入的计数器样本数限制为五个。此命令获取文件中前(最旧的)五个样本。
C:\PS> import-counter -path disk.blg -maxSamples 5
第二个命令使用数组表示法和 Windows PowerShell 范围运算符 (..)来获取文件中最后五个计数器样本。这五个样本是最新的样本。
C:\PS> (import-counter -path disk.blg)[-1 ..-5]
示例 7
C:\PS># Import-Counter
说明
-----------
此命令使用 Summary 参数来获取 Memory.blg 文件中的计数器数据摘要。
C:\PS> 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
示例 8
C:\PS># Import-Counter
说明
-----------
此示例更新性能计数器日志文件。
第一个命令使用 Import-Counter 的 ListSet 参数来获取现有计数器日志文件 OldData.blg 中的计数器。此命令使用管道运算符 (|) 将数据发送到 Foreach-Object 命令(该命令仅获取每个对象的 PathsWithInstances 属性的值)。
C:\PS> $counters = import-counter olddata.blg -ListSet * | foreach {$_.PathsWithInstances}
第二个命令在新的 Get-Counter 命令中使用相同的计数器来获取当前样本,然后将它导出到 NewData.blg 文件中。
C:\PS> get-counter -counter $counters -maxSamples 20 | export-counter c:\Logs\newdata.blg
示例 9
C:\PS># Import-Counter
说明
-----------
此命令从两个日志中导入性能日志数据并将数据保存在 $counters 变量中。此命令使用管道运算符将性能日志路径发送到 Import-Counter。
C:\PS> $counters = "d:\test\pdata.blg", "d:\samples\netlog.blg" | import-counter
请注意,每个路径用引号引起,并且各个路径之间用逗号分隔开。