PowerShell este un instrument de scripting excelent. Acesta nu numai ca va ajuta sa economisiti timp, ci si ofera o flexibilitate mai mare pentru a executa sarcini repetate manual sau sarcini programate. Aproape toate rolurile si functiile Windows sunt livrate cu cmdleturi PowerShell.

 

Puteti utiliza cmdlet-urile sistemului de operare Windows, disponibile in mod implicit, pentru a efectua sarcini operationale, cum ar fi verificarea starii unui anumit serviciu Windows pe mai multe computere, verificarea software-ului instalat pe computerele Windows, verificarea si colectarea rolurilor si functiilor instalate pe Windows Server Sisteme si multe altele.

 

Una dintre sarcinile pe care administratorii Windows le efectueaza frecvent este verificarea starii serviciilor critice pe servere de productie, cum ar fi serverele Exchange, serverele SQL si / sau controlerele de domeniu Active Directory.

 

Desi puteti utiliza SCCM si alte instrumente similare pentru a va oferi un raport privind starea serviciilor dintr-un anumit set de masini, SCCM cere ca clientul SCCM ruleze pe toate computerele tinta inainte ca acesta sa poata raporta starea serviciilor.

 

Puteti utiliza scriptul PowerShell explicat in acest articol pentru a verifica rapid si usor starea anumitor servicii pe unul sau mai multe computere Windows.

 

Verificarea starii unui singur serviciu

Daca doriti sa verificati starea unui anumit serviciu pe un computer la distanta, puteti sa executati comanda PowerShell de mai jos:

 

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

 

Executarea comenzii PowerShell de mai sus va va ajuta sa obtineti starea unui anumit serviciu specificat in parametrul „=% SomeServiceName%.  Aceasta comanda se conecteaza la un computer de la distanta specificat in parametrul “-Computer” . Ar fi bine sa schimbati atat numele computerului cat si numele de servicii inainte de a executa comanda de mai sus.

 

Verificarea starii mai multor servicii

 

In cazul in care doriti sa obtineti o lista a tuturor serviciilor Windows care ruleaza pe un system, trebuie sa executati urmatoarea comanda PowerShell:

 

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

 

Comanda de mai sus va lista toate serviciile Windows care ruleaza pe un computer la distanta specificat in parametrul “-Computer”, iar iesirea va fi afisata in fereastra PowerShell. Daca doriti sa salvati rezultatul intr-un fisier CSV, adaugati “Export-CSV”:

 

Get-WMIObject Win32_Service -Computer  | Where {$_.State -eq “Running”} | FT -Auto | Export-CSV “C:\Temp\ServicesStatus.CSV”

 

Verificarea starii unui singur serviciu pe mai multe computere

 

In timp ce comenzile PowerShell de mai sus va vor ajuta sa obtineti starea unui sau a mai multor servicii de pe un singur computer Windows, urmatorul script PowerShell poate fi utilizat daca doriti sa vedeti starea unui singur serviciu de pe mai multe computere Windows. Tot ce trebuie sa faceti este sa creati un fisier text care contine numele computerului Windows si sa modificati variabila de script “$ ServiceNameToCheck” pentru a include serviciul pe care doriti sa il verificati.

 

$ServiceNameToCheck =”SomeServiceName”

$ReportFile = “C:\Temp\ServiceStatus.CSV”

Remove-item $ReportFile -ErrorAction SilentlyContinue

$ThisSTR = “Computer Name, Service Status”

Add-Content $ReportFile $ThisSTR

$CompFile = “C:\Temp\Computers.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”

 

Odata ce scriptul PowerShell de mai sus a terminat executarea, va fi creat un fisier de raport numit ServiceStatus.CSV in folderul “C: \ Temp” care contine starea serviciului specificat in variabila “$ ServiceNameToCheck” de la toate computerele mentionate in fisierul “C: \ Temp \ Computers.TXT”.

De retinut: scriptul verifica daca comanda a fost executata cu succes inainte de a raporta starea serviciului. Scriptul PowerShell foloseste cmdlet-ul PowerShell “Get-WMIObject” pentru a colecta starea anumitor servicii de la computerele tinta. In cazul in care Get-WMIObject nu se poate conecta la un computer tinta sau daca starea serviciului nu este preluata, acesta va returna raportul “Nu se poate conecta la computerul la distanta sau serviciul care nu se executa”.

 

Concluzie

 

Este destul de usor sa obtineti starea unui sau a mai multor servicii de pe un singur sau mai multe computere Windows. Desi exista instrumente disponibile pentru colectarea anumitor date de pe computerele Windows, inclusiv starea serviciilor, exista si cazuri in care este mai usor sa utilizati aceste comenzi / scripturi PowerShell, mai ales cand trebuie sa verificati rapid starea unui anumit serviciu pe mai multe calculatoare Windows.

 

LĂSAȚI UN MESAJ

Please enter your comment!
Please enter your name here