Controllo dello stato dei servizi sui client Windows

PowerShell è un grande strumento di scripting. Non solo ti aiuta a risparmiare tempo, ma fornisce anche una maggiore flessibilità per eseguire compiti ripetuti manualmente o tramite attività programmate. Quasi tutti i ruoli e le funzioni di Windows sono forniti con le cmdlets di PowerShell.

Puoi usare le cmdlets del sistema operativo Windows, disponibili per default, per eseguire compiti operativi come controllare lo stato di un particolare servizio di Windows su più computer, controllare l’elenco dei software installati sui computer Windows, controllare e raccogliere ruoli e funzioni installate sui sistemi operativi Windows Server e molto altro.Windows Server Tutorials

Uno dei compiti che gli amministratori di Windows eseguono frequentemente è il controllo dello stato dei servizi critici sui server di produzione critici come Exchange Server, SQL Server e/o controller di dominio Active Directory.

Anche se è possibile utilizzare SCCM e strumenti simili per fornire un rapporto sullo stato dei servizi da un particolare insieme di macchine, SCCM richiede che il client SCCM sia funzionante su tutti i computer di destinazione prima che SCCM possa riferire sullo stato dei servizi.

Ecco dove il nostro ultimo script e Server Tutorial torna utile. È possibile utilizzare lo script PowerShell spiegato in questo articolo per controllare rapidamente e facilmente lo stato di particolari servizi su un singolo o più computer Windows.

Checking the Status of a Single Service

Se vuoi controllare lo stato di un particolare servizio su un computer remoto, quello che puoi fare è eseguire il comando PowerShell qui sotto:

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

Eseguire il comando PowerShell qui sopra ti aiuterà a ottenere lo stato di un servizio specifico specificato nel parametro “%SomeServiceName%. Questo comando si connette a un computer remoto specificato nel parametro “-Computer”. Probabilmente vorrete cambiare sia il nome del computer che quello del servizio prima di eseguire il suddetto comando.

Checking the Status of Multiple Services

Nel caso in cui tu voglia ottenere un elenco di tutti i servizi Windows che sono in esecuzione su un sistema di destinazione, esegui il seguente comando PowerShell:

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

Il comando sopra elencherà tutti i servizi Windows che sono in esecuzione dal computer remoto specificato nel parametro “-Computer”, e l’output verrà visualizzato nella finestra PowerShell. Se vuoi salvare l’output in un file CSV, l’aggiunta di “Export-CSV” farà il lavoro come mostrato in questo comando:

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

Verificare lo stato di un singolo servizio su più computer

Mentre i precedenti comandi PowerShell ti aiuteranno a ottenere lo stato di uno specifico o più servizi da un singolo computer Windows, il seguente script PowerShell può essere usato se vuoi vedere lo stato di un singolo servizio da più computer Windows. Tutto quello che devi fare è creare un file di testo che contenga i nomi dei computer Windows e modificare la variabile dello script “$ServiceNameToCheck” per includere il servizio che vorresti controllare.

$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"

Una volta che lo script PowerShell sopra ha finito di essere eseguito, verrà creato un file di report chiamato ServiceStatus.CSV nella cartella “C:Temp” che contiene lo stato del nome del servizio specificato nella variabile “$ServiceNameToCheck” da tutti i computer menzionati nel file “C:TempComputers.TXT”.

Nota che lo script controlla che il comando sia stato eseguito con successo prima di riportare lo stato del servizio. Lo script PowerShell utilizza il cmdlet PowerShell “Get-WMIObject” per raccogliere lo stato di uno o più servizi specifici dai computer di destinazione. Nel caso in cui Get-WMIObject non sia in grado di connettersi a un computer di destinazione o se lo stato del servizio non viene recuperato, restituirà un messaggio “Could Not Connect to Remote Computer or Service Not Running” nel report.

Conclusione

È abbastanza facile ottenere lo stato di un singolo o più servizi da un singolo o più computer Windows remoti. Mentre ci sono strumenti aziendali disponibili per raccogliere un inventario dai computer Windows, compreso lo stato dei servizi, ci sono anche casi in cui questi comandi/script PowerShell sono molto utili, in particolare quando è necessario controllare rapidamente lo stato di un particolare servizio su più computer Windows.

Nirmal Sharma è un MCSEx3, MCITP e Microsoft MVP in Directory Services. È specializzato in servizi di directory, Microsoft Azure, Failover cluster, Hyper-V, System Center e Exchange Server, e si occupa di tecnologie Microsoft dal 1994. Nel suo tempo libero, gli piace aiutare gli altri e condividere alcune delle sue conoscenze scrivendo consigli e articoli su vari siti e contribuendo agli Health Packs per le soluzioni ADHealthProf.ITDynamicPacks.Net. Nirmal può essere raggiunto a .

Segui ServerWatch su Twitter e su Facebook

.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.