Verificare lo stato di un servizio con Powershell

Buon ferragosto a tutti! Aspettando la partenza per la “Maremma Antibiotica” (cit. il Maestro M.C. :)) ne approfitto per condividere un semplice script Powershell per verificare lo stato di un servizio (inteso come Windows Service).

Il contesto mi è stato offerto dalle mie VM di test di SharePoint 2013, Server e Foundation, che ad ogni avvio mi si presentano con i servizi di SQL Server stoppati. Premesso che sarebbe stato più corretto ricercare la causa di questo comportamento, mi sono divertito ad imparare qualcosa che non avevo mai provato.

Cominciamo dando un occhiata allo script completo:

gsv | ?{$_.Name -match “SQL”} | foreach-object{
if ($_.Status -ne “Running”){
try {
Start-Service $_.Name -ErrorAction SilentlyContinue
} catch {
write-host “unable to start service”, $_.Name -nonewline
}
}
}

Per prima cosa ho utilizzato la cmdlet Get-Service nella sua forma ridotta (alias) gsv. Ho selezionato solo i servizi nel cui nome è presente la stringa utilizzando il filtro ? {$_.Name -match “SQL”}. Per ciascun elemento (servizio) ne verifico lo stato sfruttando la proprietà Status. Se diverso da “Running” provo ad avviarlo utilizzando la cmdlet Start-Service. Per evitare che lo script si blocchi in caso di errore ho inserito quest’ultimo comando in una “condizione” try – catch, stampando a video il nome del servizio che non ri riesce ad avviare.

Nel caso in cui non dovesse essere possibile selezionare con la stessa query più servizi, possiamo creare un array di servizi (in realtà nomi di servizi e “ciclare” su questi). Vediamo come.

$services = @(“THREADORDER”,”SPOOLER”,”WSEARCH”) ## In questo modo creiamo l’elenco dei servizi da verificare

## nelle successive righe eseguiamo il ciclo sui nomi, otteniamo il servizio corrispondente e proviamo ad avviarlo

foreach ($service in $services){
$svc = gsv $service
if ($svc.Status -ne “Running”){
try {
Start-Service $svc -ErrorAction Stop
} catch {
Write-Host “Unable to start service”, $svc.Name -nonewline
}
}
}

Una volta completato lo script l’ho salvato in un file .ps1 è ho schedulato la sua esecuzione all’avvio del server. Come? Sempre con Powershell ovviamente🙂

Powershell a parte, avete avuto modo di vedere (e di votare!!!) il video di Green Team nella pagina del concorso SharePoint’s Got Talent? No? Il video è stupendo e ricco di attori sconosciuti ma di gran talento, votare (eh guardare) per credere😀

Ora vado a terminare le valigie, tra poche ore si parte!!
– Riccardo

 



Lascia un commento

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...