使用Powershell从Perfmon blg中提取主机名

时间:2012-12-10 14:57:02

标签: windows powershell perfmon

我正在编写一个脚本,它将自动从.blg Perfmon日志中提取数据。

我已经找到了我需要用来获取数据的主要Import-Counter命令,但是我试图对此进行参数化,以便我可以为日志文件中的每台机器执行此操作(无需打开登录Perfmon,可能需要15分钟或更多时间,这就是我写这个脚本的原因),并找出每个主机名是什么。

我所拥有的脚本完成了这项工作,但仍需要一分钟才能返回我想要的数据,我想知道是否有更简单的方法可以做到这一点,因为我对Powershell不太熟悉?

这就是我所拥有的:

$counters = Import-Counter -Path $log_path$logfile -ListSet * | Select-Object paths -ExpandProperty paths

$svrs = @()

# for each line in the list of counters, extract the name of the server and add it to the array
foreach ($line in $counters) {
    $svrs += $line.split("\")[2]
}

# remove duplicates and sort the list of servers
$sorted_svrs = $svrs | sort -unique

foreach ($svr in $sorted_svrs) {
    Write-Host $svr
}

我只是暂时打印这些名字,但是他们会在正确的脚本中进入一个数组,然后我将运行我的Import-Counter块,并将每个主机参数化。

只是想知道是否有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

$sorted_svrs=Import-Counter "$log_path$logfile" -Counter "\\*\physicaldisk(_total)\% disk time" | %{$_.countersamples.path.split("\")[2]} | sort -Unique