Consulenze tecnologiche e informatiche
Gestire i servizi con Autotask e Powershell

Gestire i servizi con Autotask e Powershell

Torniamo alla gestione dei servizi di Microsoft Windows con un nuovo componente basato su powershell e che rispetto al precedente classifichiamo come un tool.

Scopo di questo componente di Autotask Endpoint Managment (AEM) è quello di permettere di avere informazioni su specifici servizi del sistema operativo e di agire su di loro, tale operazione deve essere ovviamente svolta con attenzione, infatti operando da remoto si potrebbe incappare in qualche spiacevole inconveniente andando a disattivare dei servizi necessari per le comunicazioni, come ad esempio la rete.

Il componente è stato progettato per non agire sul servizio alla base di AEM, questo per evitare di interrompere le comunicazioni con il dispositivo remoto e dover richiedere ad una persona presente di riavviare la postazione per ripristinare il corretto funzionamento del servizio.

L’esecuzione di questo componente può richiedere lo sblocco delle policy di esecuzione degli script in Powershell, per il quale si rimanda al articolo Autotask e Powershell un abbinamento che può non funzionare, dove è presentato un altro componente utile per abilitare e quindi disabilitare la possibilità di eseguire gli script Powershell da remoto, un componente che deve essere usato prima e dopo l’esecuzione di ogni procedura di aggiornamento da remoto attraverso Powershell.

 

Uso del componente di gestione dei servizi

 

Il componente AEM – Windows service tool (WIN) esegue le comuni azioni di avvio; arresto; riavvio e verifica dello stato di uno specifico servizio, inoltre permette di esportare un elenco di tutti i servizi definiti nel dispositivo con il loro stato, il tutto attraverso due variabili di configurazione.

Le variabili di configurazione associate al componente sono descritte nel seguito:

  • La variabile Service permette di specificare il nome del servizio su cui si intende operare. Il nome deve essere completo e può essere recuperato dalla lista servizi. Il nome deve essere quello di sistema, che per la lingua occidentale è uguale nelle diverse versioni di sistema operativo, a differenza del campo DisplayName che viene tradotto. Il valore inserito può essere una parte dell’iniziale del nome nel caso di una richiesta di visualizzazione (Action=list) della lista dei servizi.
  • La variabile Action accetta cinque valori, ovvero start, stop, restart, status o list.
    • Con start viene chiesto l’avvio del servizio e richiede il contenuto di Service.
    • Con stop viene chiesto l’arresto del servizio e richiede il contenuto di Service.
    • Con restart viene chiesto l’arresto e il successivo avvio del servizio, richiede il contenuto di Service.
    • Con status viene chiesto lo stato del servizio, si ottiene il nome, il nome visualizzato e il suo stato (running o stopped) e richiede il contenuto di Service.
    • Con list viene chiesto l’elenco completo dei servizi presenti nel dispositivo e il loro stato, la visualizzazione è in ordine alfabetico.

 

Elementi del componente

 

Il componente AEM utilizza le cmdet di Powershell e nello specifico si focalizza su Get-Service, che come funzione di base restituisce la lista dei servizi. Attraverso la manipolazione dei contenuti restituiti si articola il funzionamento del componente.

Vediamo gli elementi salienti del componente.

 

La gestione degli argomenti del componente

 

Autotask e gli argomenti per Powershell

Autotask e gli argomenti per Powershell

Il primo passo con i componenti AEM è quello di trasferire le variabili passate al componete AEM allo script Powershell, l’azione non è diretta come avviene per gli script di tipo DOS, dobbiamo quindi richiamare le variabili come se fossero variabili di ambiente.

Ad esempio ENV:ServerName

Per ottimizzazione di utilizzo del codice, ad esempio nel caso di aggiunta o modifica delle variabili di ingresso, è consigliabile raggruppare questa azione all’inizio dello script e rendere le variabili di ambiente delle variabili locali. In questo modo nel caso di cambio del nome della variabile AEM la correzione sarà solo nella definizione delle variabili.

Ad esempio $ServerName = ENV:ServerName

Le variabili fornite a questo componente non hanno un valore di default, pertanto controlliamo che i campi non siano vuoti e nel caso lo siano interrompiamo lo script con un messaggio di errore.

Per la variabile Service che deve contenere il nome del servizio verifichiamo con un’unica istruzione che la variabile non sia vuota o non definita. In questa azione ci viene in aiuto il metodo [string]::IsNullOrEmpty().

Per la variabile Action usiamo invece l’operatore NotContains, che confronta il contenuto della variabile con una lista di argomenti, nel nostro caso la lista delle azioni previste per il componente, la mancata corrispondenza genera un errore.

 

Controlli sul servizio e di esecuzione delle azioni

 

Autotask e i controlli di esecuzione sui servizi

Autotask e i controlli di esecuzione sui servizi

Riavviare o fermare i servizi da remoto presenta dei rischi, infatti la sospensione di alcuni servizi si può risolvere nella perdita di comunicazioni con la postazione o nel suo blocco. Diventa pertanto importante agire solo sui servizi di cui si conosce la funzione, nel dubbio è consigliabile sperimentare il loro spegnimento su di una propria postazione a breve distanza dalle dita.

Il fermo di un servizio non rappresenta un danno insormontabile, tuttavia potrebbe richiedere l’intervento di una persona presso la sede remota per spegnere e riaccendere il dispositivo manualmente.

Nel componente sono stati introdotti dei controlli sulle azioni richieste, il controllo principale impedisce l’esecuzione di operazioni di avvio/spegnimento sul servizio di AEM, tale azione causerebbe l’isolamento della postazione remota dopo lo spegnimento del servizio, nel caso di restart ci troviamo invece con una incoerenza nello stato di esecuzione dei job.

Il componente controlla inoltre che l’azione richiesta non sia in contrasto con lo stato del servizio, pertanto non viene svolta un’azione di spegnimento su di un servizio già fermo o di avvio su un servizio già attivo. L’operazione di avvio su un servizio attivo, in rari casi e con particolari servizi, determina uno stato di isolamento del elemento avviato, risolvibile solo con un riavvio del dispositivo e in alcuni casi con uno spegnimento mediante bottone.

Lo spegnimento di un servizio spento non crea particolari problemi, ma sarebbe un picco istantaneo di lavoro che possiamo evitare.

Prima di svolgere i controlli il componente cerca il servizio specificato e se non lo trova sospende la procedura segnalando l’errore, in caso contrario raccoglie i dati di base che lo riguardano, ovvero il suo nome breve, il suo nome visualizzato e il suo stato. Le informazioni sono salvate in tre variabili per essere utilizzate successivamente.

Tutti questi controlli sono svolti solo per le azioni che agiscono sul funzionamento dei servizi, nel caso di richiesta della lista dei servizi i controlli sono evitati e si passa direttamente all’esecuzione della ricerca.

 

Azioni sui servizi

 

Autotask e Powershelle, le azioni sui servizi

Autotask e Powershelle, le azioni sui servizi

Con l’enunciato switch il componente svolge le azioni richiesti nella variabile Action, l’uso di questo enunciato ottimizza i tempi di esecuzione del codice evitando l’utilizzo di molte condizioni if.

Le azioni svolte possono essere cinque, ovvero quelle previste per la variabile, nello specifico:

  • Con start il componente avvia il servizio usando la cmdlet Start-Service, per permettere l’azione senza prompt di conferma deve essere fornito anche l’argomento Force.
  • Con stop il componente ferma il servizio usando la cmdlet Stop-Service, per permettere l’azione senza prompt di conferma deve essere fornito anche l’argomento Force.
  • Con restart il componente riavvia il servizio usando la cmdlet Retart-Service, per permettere l’azione senza prompt di conferma deve essere fornito anche l’argomento Force.
  • Con status il componente invia nel report le informazioni sul servizio richiesto e raccolte nella fase iniziale, i dati vengono riportati su righe distinte. Questa azione non manipola in alcun modo i servizi.
  • Con list il componente riporta la lista dei servizi in base alla stringa specificata con la variabile Service, il campo lasciato vuoto visualizza tutti i servizi presenti.

 

Controllo finale

 

Autotask il controllo finale sul esecuzione

Autotask il controllo finale sul esecuzione

Dopo aver eseguito l’azione richiesta sul servizio, ad eccezione delle opzioni list e status, il componente interroga nuovamente il sistema per avere lo stato finale del servizio, che restituisce come commento nel report.

Questa verifica permette di determinare se l’operazione richiesta è andata a buon fine.

 

Scarica da qui il componente

 

Buon aperitivo!

 

 

Se sei interessato ad approfondire questi contenuti o ad avere nella tua aziende questi strumenti o i prodotti menzionati, contattaci attraverso la pagina di contatto di questo sito, o se preferisci cercami attraverso la pagina FaceBook o il mio profilo Linkedin.

Per essere informato sui nuovi articoli e contenuti puoi anche iscriverti alle nostre newsletter.

 

 

 

Categorie
Archivi
Count per Day
  • 224Questo articolo:
  • 151654Totale letture:
  • 163Letture odierne:
  • 264Letture di ieri:
  • 21 novembre 2016Dal:
Iscriviti alla Newsletter
Iscriviti alla nostra newsletter ed unisciti ai nostri iscritti.

Seleziona lista (o più di una):




Trattamento dei dati