Programmazione.it
Greenpeace
Script per servizi Windows
Scritto da Emanuele Gianturco il 16-07-2007 ore 09:29
Nel lavoro quotidiano di sviluppatore su piattaforma Windows si ha spesso l'esigenza di attivare e disattivare servizi. Si possono allora creare tutta una serie di aiuti per facilitare queste operazioni sistemistiche. Una prima facilitazione è creare sul desktop un collegamento che punti ad [code]%SYSTEMROOT%system32services.msc[/code] per un rapido richiamo dell'interfaccia. Successivamente è utile scrivere qualche script, ad esempio un paio di file batch, che possiamo chiamare avviaServizi.bat e fermaServizi.bat.

Con il primo batch possiamo far partire tutti i servizi che ci servono per testare l'applicazione che stiamo sviluppando; ad esempio se stiamo sviluppando un'applicazione tramite JSP sotto Apache/Tomcat e come database MySql, potremmo scrivere il seguente batch:

[code]net start Tomcat5
net start MySQL[/code]


mentre per fermare i servizi il secondo batch conterrà le seguenti istruzioni:

[code]net stop Tomcat5
net stop MySQL[/code]


Un altro modo per ottenere lo stesso risultato è quello di utilizzare codice VBScript; per avviare i servizi avremo, dunque, avviaServizi.vbs:

[code][size]set myServices = GetObject("winmgmts:")
set myObject = myServices.Get("Win32_Service.Name='Tomcat5'")
myObject.StartService()
set myObject = myServices.Get("Win32_Service.Name='MySQL'")
myObject.StartService()[/code][/size]

mentre per arrestarli avremo fermaServizi.vbs:

[code]set myServices = GetObject("winmgmts:")
set myObject = myServices.Get("Win32_Service.Name='Tomcat5'")
myObject.StopService()
set myObject = myServices.Get("Win32_Service.Name='MySQL'")
myObject.StopService()[/code]


Il nome da utilizzare negli script è Nome del servizio, che appare nelle proprietà e risulta diverso dal Nome visualizzato, colonna Nome della lista di default dei servizi. E' possibile recuperare tutti i servizi facendo un ciclo su Win32_Service, e visualizzare vari attributi. Il seguente esempio mostra come farlo per uno in particolare:

[code]WScript.Echo "Inizio"
For each Serv in GetObject("winmgmts:").InstancesOf ("Win32_Service")

If Serv.DisplayName="Apache Tomcat" Then

WScript.Echo "Name:" & Serv.Name &chr(10)&chr(13)& "DisplayName: "& Serv.DisplayName &chr(10)&chr(13)&"Description: "& Serv.Description &chr(10)&chr(13)& "PathName: "& Serv.PathName &chr(10)&chr(13)& "Started: "& Serv.Started &chr(10)&chr(13)& "State: "& Serv.State &chr(10)&chr(13)& "Status: "& Serv.Status &chr(10)&chr(13)

Serv.StartService()
End If
Next
WScript.Echo "Fine"[/code]


La lista completa degli attributi e dei metodi si può reperire su Win32_Service Microsoft Developer Network.
Copyright Programmazione.it® 1999-2005. Tutti i diritti riservati. Testata giornalistica iscritta col n. 569 presso il Tribunale di Milano in data 14/10/2002.