Piszę skrypt PowerShell do przechwytywania następujących liczników serwera SQL:
SQL Server: Menedżer pamięci: Całkowita pamięć serwera (KB)
SQL Server: Menedżer pamięci: Pamięć serwera docelowego (KB)
Moja maszyna ma 3 instancje serwerów SQL, więc chcę, aby ten skrypt przechwytywał wszystkie liczniki dynamicznie i raportował wartość tylko dla 1 próbki. próbowałem napisać następujące:
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
ostatecznie chcę uruchomić to na wielu serwerach z -computername
parametrem, a zatem chcę, aby przechwytywał to dynamicznie.
Czy ktoś może mi pomóc w znalezieniu tego, czego brakuje? Oto dokładny skrypt, który uruchamiam:
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)
}
z góry dziękuję
źródło
Spójrz na to:
Spowoduje to wyświetlenie listy baz danych i powiązanych z nimi \ Transakcji / s. Na początku wyszukiwania pojawiają się błędy, ale zakładam, że jest to problem z uprawnieniami. W przeciwnym razie działa jak piękno. Możesz użyć Regex, aby go wyczyścić, jeśli chcesz :)
źródło