A PowerShell egy nagyszerű szkriptkészítő eszköz. Nemcsak segít időt megtakarítani, hanem nagyobb rugalmasságot biztosít az ismétlődő feladatok kézi vagy ütemezett feladatokon keresztül történő végrehajtásához. Szinte minden Windows szerepkör és funkció a PowerShell cmdletekkel együtt jár.
A Windows operációs rendszer alapértelmezésben rendelkezésre álló cmdletjeivel olyan operatív feladatokat végezhet, mint például egy adott Windows szolgáltatás állapotának ellenőrzése több számítógépen, a Windows számítógépekre telepített szoftverek listájának ellenőrzése, a Windows Server operációs rendszereken telepített szerepkörök és funkciók ellenőrzése és összegyűjtése és még sok más.
A Windows rendszergazdák egyik gyakran végzett feladata a kritikus szolgáltatások állapotának ellenőrzése a kritikus termelési szervereken, például az Exchange szervereken, az SQL szervereken és/vagy az Active Directory tartományvezérlőkön.
Noha az SCCM és hasonló eszközök segítségével jelentést kaphat a szolgáltatások állapotáról egy adott gépcsoportról, az SCCM-nek szüksége van arra, hogy az SCCM kliens minden célszámítógépen működjön, mielőtt az SCCM jelentést tudna készíteni a szolgáltatások állapotáról.
Ez az a pont, ahol legújabb szkriptünk és szerveroktatásunk jól jön. A cikkben ismertetett PowerShell szkript segítségével gyorsan és egyszerűen ellenőrizheti az egyes szolgáltatások állapotát egy vagy több Windows-számítógépen.
Egyetlen szolgáltatás állapotának ellenőrzése
Ha egy adott szolgáltatás állapotát szeretné ellenőrizni egy távoli számítógépen, akkor az alábbi PowerShell parancsot kell végrehajtania:
Get-WMIObject -Computer -Query "Select * From Win32_Service WHERE Name Like "%SomeServiceName%"
A fenti PowerShell parancs végrehajtása segít a “%SomeServiceName% paraméterben megadott adott szolgáltatás állapotának lekérdezésében. Ez a parancs a “-Computer” paraméterben megadott távoli számítógéphez csatlakozik. A fenti parancs végrehajtása előtt valószínűleg meg kell változtatnia mind a számítógép, mind a szolgáltatás nevét.
Minden szolgáltatás állapotának ellenőrzése
Ha egy célrendszeren futó összes Windows-szolgáltatás listáját szeretné megkapni, hajtsa végre a következő PowerShell parancsot:
Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto
A fenti parancs a “-Computer” paraméterben megadott távoli számítógépen futó összes Windows-szolgáltatást felsorolja, és a kimenet megjelenik a PowerShell ablakban. Ha a kimenetet egy CSV-fájlba szeretné menteni, az “Export-CSV” hozzáadása elvégzi a feladatot, amint az ebben a parancsban látható:
Get-WMIObject Win32_Service -Computer | Where {$_.State -eq "Running"} | FT -Auto | Export-CSV "C:TempServicesStatus.CSV"
Egyetlen szolgáltatás állapotának ellenőrzése több számítógépen
Míg a fenti PowerShell-parancsok segítségével egy adott vagy több szolgáltatás állapotát is megtudhatja egyetlen Windows-számítógépről, az alábbi PowerShell-szkriptet használhatja, ha egyetlen szolgáltatás állapotát szeretné látni több Windows-számítógépről. Mindössze annyit kell tennie, hogy létrehoz egy szöveges fájlt, amely tartalmazza a Windows számítógépek nevét, és módosítja a “$ServiceNameToCheck” szkriptváltozót, hogy tartalmazza azt a szolgáltatást, amelyet ellenőrizni szeretne.
$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"
Amint a fenti PowerShell szkript végrehajtása befejeződött, létrejön egy ServiceStatus nevű jelentésfájl.CSV a “C:Temp” mappában, amely a “$ServiceNameToCheck” változóban megadott szolgáltatásnév állapotát tartalmazza a “C:TempComputers.TXT” fájlban említett összes számítógépről.
Megjegyzendő, hogy a szkript ellenőrzi, hogy a parancs sikeresen végrehajtásra került-e, mielőtt a szolgáltatás állapotáról jelentést készít. A PowerShell szkript a “Get-WMIObject” PowerShell-cmdlet segítségével gyűjti össze a célszámítógépek meghatározott szolgáltatás(ok) állapotát. Abban az esetben, ha a Get-WMIObject nem tud csatlakozni a célszámítógéphez, vagy ha a szolgáltatás állapotát nem sikerült lekérni, a jelentésben a “Nem sikerült csatlakozni a távoli számítógéphez vagy a szolgáltatás nem fut” üzenetet adja vissza.
Következtetés
Egyetlen vagy több szolgáltatás állapotának lekérdezése egyetlen vagy több távoli Windows-számítógépről meglehetősen egyszerű. Bár rendelkezésre állnak vállalati eszközök a Windows számítógépek leltárának összegyűjtésére, beleértve a szolgáltatások állapotát is, vannak olyan esetek is, amikor ezek a PowerShell parancsok/szkriptek nagyon jól jönnek, különösen akkor, ha gyorsan kell ellenőrizni egy adott szolgáltatás állapotát több Windows számítógépen.
Nirmal Sharma MCSEx3, MCITP és Microsoft MVP a Directory Services területén. Szakterülete a címtárszolgáltatások, a Microsoft Azure, a Failover fürtök, a Hyper-V, a System Center és az Exchange szerverek. 1994 óta foglalkozik Microsoft technológiákkal. Szabadidejében szívesen segít másoknak, és megosztja tudásának egy részét azzal, hogy tippeket és cikkeket ír különböző oldalakon, valamint hozzájárul az ADHealthProf.ITDynamicPacks.Net megoldások Health Pack-jeihez. Nirmal elérhető a .
Kövesse a ServerWatch-ot a Twitteren és a Facebookon
.