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-CounterExport-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-CounterStartTimeEndTime 参数来指定范围。

示例 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-CounterListSet 参数来获取现有计数器日志文件 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

输入

String

可以通过管道将性能计数器日志路径传递给此 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 命令。