我正在编写一个脚本,它将自动从.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块,并将每个主机参数化。
只是想知道是否有更好的方法吗?
答案 0 :(得分:0)
$sorted_svrs=Import-Counter "$log_path$logfile" -Counter "\\*\physicaldisk(_total)\% disk time" | %{$_.countersamples.path.split("\")[2]} | sort -Unique