Kontrola stavu služeb na klientech systému Windows

PowerShell je skvělý skriptovací nástroj. Pomáhá nejen šetřit čas, ale také poskytuje větší flexibilitu při provádění opakovaných úloh ručně nebo prostřednictvím naplánovaných úloh. Téměř všechny role a funkce systému Windows jsou dodávány s rutinami prostředí PowerShell.

Pomocí rutin operačního systému Windows, které jsou k dispozici ve výchozím nastavení, můžete provádět provozní úlohy, jako je kontrola stavu určité služby systému Windows na více počítačích, kontrola seznamu softwaru nainstalovaného v počítačích se systémem Windows, kontrola a shromažďování rolí a funkcí nainstalovaných v operačních systémech Windows Server a mnoho dalších.Windows Server Tutorials

Jednou z úloh, které správci systému Windows často provádějí, je kontrola stavu kritických služeb na kritických produkčních serverech, jako jsou servery Exchange, servery SQL a/nebo řadiče domény Active Directory.

Přestože můžete použít SCCM a podobné nástroje, které vám poskytnou zprávu o stavu služeb z určité sady počítačů, SCCM vyžaduje, aby klient SCCM fungoval na všech cílových počítačích, a teprve poté může SCCM podat zprávu o stavu služeb.

Tady se hodí náš nejnovější skript a výukový kurz Server. Pomocí skriptu PowerShell vysvětleného v tomto článku můžete rychle a snadno zkontrolovat stav konkrétních služeb na jednom nebo více počítačích se systémem Windows.

Kontrola stavu jedné služby

Pokud chcete zkontrolovat stav konkrétní služby na vzdáleném počítači, můžete provést následující příkaz prostředí PowerShell:

Get-WMIObject -Computer -Query "Select * From Win32_Service WHERE Name Like "%SomeServiceName%"

Provedení výše uvedeného příkazu prostředí PowerShell vám pomůže získat stav konkrétní služby zadané v parametru „%SomeServiceName%. Tento příkaz se připojí ke vzdálenému počítači zadanému v parametru „-Computer“. Před spuštěním výše uvedeného příkazu budete pravděpodobně chtít změnit název počítače i služby.

Kontrola stavu více služeb

V případě, že chcete získat seznam všech služeb systému Windows, které jsou spuštěny v cílovém systému, spusťte následující příkaz prostředí PowerShell:

Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto

Výše uvedený příkaz zobrazí seznam všech služeb systému Windows, které jsou spuštěny ze vzdáleného počítače uvedeného v parametru „-Computer“, a výstup se zobrazí v okně prostředí PowerShell. Pokud chcete výstup uložit do souboru CSV, přidáním příkazu „Export-CSV“ to provedete, jak je uvedeno v tomto příkazu:

Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto | Export-CSV "C:TempServicesStatus.CSV"

Kontrola stavu jedné služby na více počítačích

Pokud vám výše uvedené příkazy prostředí PowerShell pomohou získat stav konkrétní služby nebo více služeb z jednoho počítače se systémem Windows, následující skript prostředí PowerShell lze použít, pokud chcete zobrazit stav jedné služby z více počítačů se systémem Windows. Stačí vytvořit textový soubor obsahující názvy počítačů se systémem Windows a upravit proměnnou skriptu „$ServiceNameToCheck“ tak, aby obsahovala službu, kterou chcete zkontrolovat.

$ServiceNameToCheck ="SomeServiceName"
$ReportFile = "C:TempServiceStatus.CSV"
Remove-item $ReportFile -ErrorAction SilentlyContinue
$ThisSTR = "Computer Name, Service Status"
Add-Content $ReportFile $ThisSTR
$CompFile = "C:TempComputers.TXT"

Foreach ($ComputerName in Get-Content "$CompFile")
{
$Error.Clear()
Get-WMIObject -Computer $ComputerName -Query "Select * From Win32_Service WHERE Name Like "%$ServiceNameToCheck% AND {$_.State -eq "Running"}
IF ($Error.Count -ne 0)
{
$ThisSTR = $ComputerName+", Could Not Connect to Remote Computer or Service Not Running"
Add-Content $ReportFile $ThisSTR
}
else
{
$ThisSTR = $ComputerName+", Running"
Add-Content $ReportFile $ThisSTR
}
}
Write-Host "Service status was retrieved from the list of computers and the output was saved in $ReportFile"

Po dokončení provádění výše uvedeného skriptu PowerShell, bude vytvořen soubor zprávy s názvem ServiceStatus.CSV ve složce „C:Temp“, který obsahuje stav názvu služby zadaného v proměnné „$ServiceNameToCheck“ ze všech počítačů uvedených v souboru „C:TempComputers.TXT“.

Všimněte si, že skript před podáním zprávy o stavu služby kontroluje, zda byl příkaz úspěšně proveden. Skript prostředí PowerShell používá rutinu prostředí PowerShell „Get-WMIObject“ ke shromažďování stavu konkrétních služeb z cílových počítačů. V případě, že se příkazu Get-WMIObject nepodaří připojit k cílovému počítači nebo se nepodaří získat stav služby, vrátí v hlášení zprávu „Could Not Connect to Remote Computer or Service Not Running“ (Nepodařilo se připojit ke vzdálenému počítači nebo služba neběží).

Závěr

Zjistit stav jedné nebo více služeb z jednoho nebo více vzdálených počítačů se systémem Windows je poměrně snadné. I když jsou k dispozici podnikové nástroje pro shromažďování soupisu z počítačů se systémem Windows včetně stavu služeb, existují také případy, kdy se tyto příkazy/skripty prostředí PowerShell velmi hodí, zejména když potřebujete rychle zjistit stav určité služby na více počítačích se systémem Windows.

Nirmal Sharma je MCSEx3, MCITP a Microsoft MVP v oblasti adresářových služeb. Specializuje se na adresářové služby, Microsoft Azure, clustery s podporou převzetí služeb při selhání, Hyper-V, System Center a Exchange Servers a technologiemi společnosti Microsoft se zabývá od roku 1994. Ve svém volném čase rád pomáhá ostatním a dělí se o část svých znalostí psaním tipů a článků na různých webech a přispívá do balíčků Health Pack pro řešení ADHealthProf.ITDynamicPacks.Net. Nirmala můžete kontaktovat na adrese .

Sledujte ServerWatch na Twitteru a na Facebooku

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.