J'écris un script PowerShell pour capturer les compteurs SQL Server suivants:
SQL Server: Gestionnaire de mémoire: mémoire totale du serveur (Ko)
SQL Server: Gestionnaire de mémoire: mémoire du serveur cible (Ko)
Ma machine dispose de 3 instances de serveurs SQL, je souhaite donc que ce script capture dynamiquement tous les compteurs et rapporte la valeur pour 1 échantillon uniquement. j'ai essayé d'écrire ce qui suit:
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
finalement, je veux exécuter cela sur plusieurs serveurs avec -computername
paramètre et donc je veux qu'il capture dynamiquement.
Quelqu'un peut-il m'aider à trouver ce qui manque? Voici le script exact que j'exécute:
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)
}
Merci d'avance
la source
Regarde ça:
Cela produira une liste de bases de données et leurs \ Transactions / sec associés. Je reçois des erreurs de mon côté au début de la recherche, mais je suppose que c'est un problème d'autorisations. Sinon, cela fonctionne comme une beauté. Vous pouvez utiliser Regex pour le nettoyer si vous le souhaitez :)
la source