powershell获取sql服务器内存计数器并显示值


9

我正在编写一个powershell脚本来捕获以下SQL Server计数器:

SQL Server:内存管理器:服务器总内存(KB)

SQL Server:内存管理器:目标服务器内存(KB)

我的机器有3个SQL Server实例,所以我希望此脚本动态捕获所有计数器并仅报告1个样本的值。我试着写以下内容:

Get-counter -List *SQL*Memory* | Select paths, counter | format-list # doesn't display full list

Get-counter -List *SQL*Memory* | Select paths, counter | where {_.counter -like "*server memory*"} |format-list # displays nothing

最终,我想使用-computername参数跨多个服务器运行它,因此我希望它可以动态捕获。

谁能帮我找到缺失的东西吗?以下是我正在运行的确切脚本:

Function checkTransactionsPerSecond([string] $Hostname )
{ 
    (Get-Counter -ListSet "*Databases").Counter | Where {$_ -like "*\Transactions/sec"} #this returns nothing
#   $listofmetrics = (Get-Counter -ListSet "*Databases").Counter | Where {$_ -like "*\Transactions/sec"}
#   $listofmetrics | Get-Counter
}

clear


foreach ($Hostname in Get-Content "D:\TEMP\machines.txt")
{
    Write-Host $Hostname
    checkTransactionsPerSecond($Hostname) 
}

提前致谢

Answers:


7

Aaron Bertrand在上面写了一篇很好的文章,内容非常详细... 我如何使用PowerShell收集Performance Counter数据

然后,Laerte Junior在一篇简单的文章“ 使用Powershell收集Perfmon数据”中找到了自己想要的计数器的绝妙方法。这可能是您要开始的地方。我相信它有一些cmdlet用于捕获特定实例的计数器。

编辑: 看看这是您所需要的:


$listofmetrics = (Get-Counter -ListSet "*Databases" -ComputerName $hostname).Counter | Where {$_ -like "*\Transactions/sec"}
$listofmetrics | Get-Counter

Edit2已添加-ComputerName


谢谢...但是我主要的问题是向计数器添加其他过滤器,例如,如果我运行以下命令:$ listOfMetrices =(Get-Counter -ListSet“ * Databases” -ComputerName $ Hostname |其中{$ _。路径-如“ * \ transactions / sec”}})$ listOfMetrices | get-counter它显示了数据库类别下的所有计数器...但是我真正想看到的是每个数据库的事务/秒。请帮忙
Manjot 2011年

调整后的答案。

谢谢肖恩,我尝试使用您更新的代码。但是,它现在无法找到任何计数器。(获取计数器-ListSet“ *数据库”)。其中{$ _ -like“ * \ Transactions / sec”}没有找到任何计数器。感谢您的时间
Manjot 2011年

真?您正在使用哪个版本的SQL Server?我仅在Window Server 2008 R2,SQL Server 2008 R2上尝试过此操作。

1
我还尝试在Window Server 2003,SQL 2005上运行,它返回一个计数器:\ SQLServer:Databases(*)\ Transactions / sec

0

看一下这个:

$listofmetrics = Get-Counter -ListSet "*Databases" | Get-Counter -MaxSamples 1 | Select -ExpandProperty CounterSamples | Where {$_.path -like "\Transactions/sec"} | Select Path, CookedValue

这将输出数据库及其关联的\ Transactions / sec的列表。搜索开始时出现错误,但我认为这是权限问题。否则,它就像美女。如果愿意,可以使用Regex进行清理:)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.