Consulenze tecnologiche e informatiche
Autotask e MailStore client passando per Powershell

Autotask e MailStore client passando per Powershell

Dopo la creazione di un componente per la gestione del Add-in Outlook di MailStore torniamo in scena con la seconda parte dell’avventura con  Autotask Endpoint Managment (AEM) e Mailstore server, oggi vedremo come con un nuovo componente è possibile agire sull’installazione di MailStore Client.

 

Come per il precedente componente, anche in questo caso ci occuperemo dei passaggi di installazione, aggiornamento e rimozione del programma.

 

A tale scopo utilizzeremo alcuni elementi del precedente componente AEM, quindi sempre avvalendoci del supporto di Powershell, con delle varianti legate al fatto che abbiamo a che fare con un programma indipendente e non collegato a Miscrosoft Outlook come nel precedente articolo.

 

Il componente sviluppato per la gestione di MailStore Client non può essere impiegato in presenza dell’installazione di MailStore server, essendo il programma una parte fondamentale nella gestione del server e pertanto da aggiornare unitamente alle piattaforma.

 

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 per MailStore Client

 

Il componente AEM – Setup MailStore Client (WIN) ha diverse funzioni, controllate da alcune variabili di configurazione, inoltre al suo interno contiene il file di installazione del programma di MailStore, che per questa edizione è alla versione 10.0.2. Il componente è stato anche provato con le versioni di MailStore server a partire dalla 9.5, oltre che su sistemi operativi Microsoft Windows 7 e 10.

 

Le funzioni svolte dal componente sono così riassumibili:

  • Rimozione dal computer del programma e cancellazione dai registri della sua configurazione, la funzione viene svolta impostando la variabile Uninstall a True. Può essere eseguito anche in assenza del programma con il solo scopo di rimuovere i dati di configurazione dai registri.
  • Installazione (variabile Install a True) del programma partendo da un dispositivo pulito, il componente installa il programma caricato al suo interno e crea le chiavi di registro necessarie per l’accesso al server MailStore, vengono inseriti i valori relativi al indirizzo del server (variabile ServerName); al occultamento (variabile SameServer a True) della schermata di cambio del indirizzo del server e al ripristino del client di posta associato (variabile DefaultMailClient a True) all’apertura dei messaggi salvati. L’utente deve solo inserire il nome utente e la password al primo accesso.
  • Aggiornamento (variabile Install a True) del programma già installato, in questo caso prima rimuove la vecchia versione e quindi installa quella nuova azzerando la configurazione nei registri e impostando i valori relativi al indirizzo del server (variabile ServerName); al occultamento (variabile SameServer a True) della schermata di cambio del indirizzo del server e al ripristino del client di posta associato (variabile DefaultMailClient a True) all’apertura dei messaggi salvati. L’utente deve solo inserire il nome utente e la password al primo accesso.
  • Configurazione (variabile Install a False) del programma installato con l’azzeramento della configurazione nei registri e impostando i valori relativi al indirizzo del server (variabile ServerName); al occultamento (variabile SameServer a True) della schermata di cambio del indirizzo del server e al ripristino del client di posta associato (variabile DefaultMailClient a True) all’apertura dei messaggi salvati. L’utente deve solo inserire il nome utente e la password al primo accesso.

 

La procedura eseguita da PowerShell è tale da permettere la rimozione e riconfigurazione del programma anche se questo è in esecuzione, tuttavia le modifiche non vengono recepite dall’istanza in esecuzione e possono portare a delle instabilità durante l’utilizzo.

 

Autotask messaggi di notifica sul dispositivo

Autotask messaggi di notifica sul dispositivo

Trattandosi di una procedura di aggiornamento necessaria la scelta è stata quella di inviare un pop-up all’utente con la segnalazione dell’inizio della manutenzione e quindi chiudere il processo per procedere con la rimozione. Le attività di rimozione e installazione richiedono meno di due minuti ed essendo tutti i dati del programma salvati sul server la sua chiusura non comporta la perdita di contenuti.

 

Si è deciso di non dare scelta al utente per evitare una serie infinita di posticipi con il conseguente ristagno delle vecchie versioni ed una situazione disomogenea nel installato al passare del tempo.

 

Elementi del componente

 

Come anticipato il componente utilizza le cmdlet di Powershell, che rendono possibile una maggiore estensione delle funzionalità e dei livelli di intervento più profondi nel sistema operativo. La flessibilità del componente passa per le azioni di controllo di esecuzione dei programmi, per le azioni di installazione e rimozione dei programmi e per la manipolazione dei registri di sistema.

 

Vediamo alcuni punti salienti di questi passaggi.

 

La gestione degli argomenti del componente

 

Autotask e il passaggio degli argomenti a Powershell

Autotask e il passaggio degli argomenti a 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

 

Per comodità e riutilizzabilità nel contesto del codice abbiamo creato due array che contengono i messaggi di errore e informativi usati durante la procedura. Il conteggio dei contenuti di un array parte sempre da zero, quindi il primo messaggio sarà identificato come $MSGError[0].

 

Le variabili fornite al componente sono tutte con un valore di default, l’eccezione è l’assegnazione dell’indirizzo del server, pertanto per questa stringa controlliamo che il campo non sia vuoto e nel caso lo sia interrompiamo lo script con un messaggio di errore. Il codice di uscita Exit 1 influenza anche il colore della barra di esecuzione dei job in AEM, rendendola rossa.

 

Dobbiamo inoltre essere certi di controllare nel modo corretto i valori passati dalle variabili del componente, per una variabile usata come semaforo sarebbe sufficiente verificare che esista

 

Ad esempio If ($Install) { … codice …}

 

Se la variabile ha un valore viene eseguito il codice, se non esiste si passa oltre. Le variabili boleane di AEM sono di fatto delle variabili con due valori predefiniti, ovvero true e false, passate al codice con una sintassi completamente minuscola, dobbiamo pertanto controllare il valore passato in relazione alle azioni da eseguire

 

Ad esempio If ($Install -eq “true”) { … codice …}

Oppure If ($Install -eq “false”) { … codice …}

 

MailStore server presente nel dispositivo

 

Autotask e localizzazione di un servizio Microsoft Windows con Powershell

Autotask e localizzazione di un servizio Microsoft Windows con Powershell

Come anticipato questo componente non può essere eseguito su un dispositivo che ospita MailStore Server, dove è bene procedere con l’aggiornamento di tutta la piattaforma MailStore e non del solo client.

 

Il vincolo non è legato ad errori durante le operazioni svolte dal componente, si tratta di una scelta fatta per evitare disallineamenti e problemi accidentali nel sistema server.

 

Otteniamo questo risultato con un controllo sui servizi presenti nel dispositivo, in particolare sull’esistenza del servizio MailStore Server. In questo caso focalizziamo la ricerca sul campo DisplayName, dove troviamo il nome riportato nel pannello dei servizi, quindi con la spaziatura tra le due parole. Potremmo anche fare la ricerca nel campo Name, in questo caso dovremmo però cercare la chiave MailstoreServer, senza spazi.

 

La presenza del server installato interrompe l’esecuzione della procedura ed esce fornendo un messaggio di errore e una barra rossa nel pannello della console di Autotask.

 

Il profilo collegato

 

Determinazione del SID utente nei registri

Determinazione del SID utente nei registri

Per poter agire sui registri del utente dobbiamo determinare quale sia l’utente collegato, oltre a sapere se siamo in un contesto workgroup o di dominio.

 

Richiediamo al sistema alcune informazioni e da queste estraiamo solo la username che ripuliamo dalle informazioni superflue di formattazione, il risultato è una stringa nella forma domain\username.

 

Con uno split separiamo il nome del workgroup o del dominio dalla username, ottenendo due variabili distinte.

 

La richiesta ha un valore null nel caso in cui non sia mai avvenuto un accesso diretto al sistema, questo si verifica nel caso di collegamenti da remoto al sistema, ad esempio per i server. L’assenza di un utente specifica causa l’interruzione dello script con un messaggio di errore.

 

L’esistenza di una username ci permette di procedere chiedendo se il sistema è parte di un dominio e quindi di richiedere con la giusta sintassi il SID del utente al fine di determinare il percorso corretto dei registri di sistema da modificare.

 

Le azioni sui registri

 

Autotask e le azioni sui registri con Powershell

Autotask e le azioni sui registri con Powershell

Il componente opera in modo diretto sui registi di sistema, dove deve interagire con le chiavi presenti nella sezione HKEY_CURRENT_USER\Software\deepinvet, che ospita le configurazioni dei programmi di MailStore, tuttavia l’agente di AEM non è l’utente collegato al sistema operativo e quindi non ha accesso al suo ramo dei registri, pertanto la modifica della sezione è per lui preclusa.

 

Per operare su questo ramo sfruttiamo le caratteristiche del sistema operativo, infatti la chiave HKEY_CURRENT_USER è un puntatore al codice che identifica l’utente nella chiave HKEY_USERS, a tale fine localizziamo l’utente attivo e il suo SID, per poi inizializzare uno spazio disco corrispondente alla chiave HKEY_USERS per poi poter operare nel ramo del utente. Le modifiche apportate a questo ramo si riflettono nella HKEY_CURRENT_USER.

 

Le modifiche sui registri sono estremamente critiche e da eseguire con la massima cautela, il componente AEM oltre ad aggiungere e modificare le chiavi relative agli elementi di configurazione di MailStore ne cancella anche i contenuti nel caso in cui se ne richieda la rimozione.

 

Il programma è in esecuzione (+1)

La peculiarità di AEM è quella di operare mentre l’utente sta lavorando e minimizzando l’impatto sul lavoro, questo significa che durante l’esecuzione del componente il programma MailStore Client potrebbe essere in esecuzione.

Autotask messaggi di notifica sul dispositivo

Autotask messaggi di notifica sul dispositivo

Il fatto che MailStore Client sia in esecuzione non costituisce un problema, infatti le operazioni avvengono comunque, tuttavia conducono ad uno stato di instabilità dell’istanza attiva e potenzialmente anche di versione diversa.

A tale scopo lo script controlla se il programma è in esecuzione, dando un avviso al utente mediante pop-up e chiudendolo usando la cmdlet stop-process.

L’utente non ha modo di interrompere l’attività programmata, per evitare che come di abitudine ne interrompa l’esecuzione creando dei cicli infiniti di aggiornamento.

 

 

Scarica il componete da qui

 

 

A che versione di MailStore sei rimasto fermo?

 

 

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
  • 142Questo articolo:
  • 143062Totale letture:
  • 45Letture odierne:
  • 171Letture 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