Distribuzione di ArubaSign tramite GPO utilizzando uno script PowerShell

Sebbene sia disponibile un msi per l’installazione di ArubaSign disponibile al link Software e Driver per Firma Digitale | Pec.it provando a gestire l’installazione tramite GPO distribuendo l’msi ho riscontrato alcuni problemi:

  • Se l’msi viene distribuito tramite una GPO computer il software non renderà disponibile i menu contestuali e questo è probabilmente dovuto al fatto che durante l’installazione viene utilizzato l’account di sistema.
  • Se l’msi viene distribuito tramite una GPO utente ho invece riscontrato interruzioni di funzionamento dell’applicazione in particolare dopo alcuni aggiornamenti Windows, ma non solo. In generale talvolta l’applicazione smette di funzionare e occorre reinstallarla, ma c’è da notare che sebbene l’applicazione sia stata installata tramite una GPO utente l’applicazione non viene installata nel profilo dell’utente ma in una directory comune C:\ArubaSign\users\apps\ e questo può essere l’origine dei malfunzionamenti saltuari.

Se invece si installa l’applicazione manualmente questa verrà installata nel profilo utente in C:\Users\UserName\AppData\Local\ArubaSign\users\apps\.

Di conseguenza il modo più corretto per installare l’applicazione tramite GPO potrebbe essere quello di usare uno script PowerShell per l’installazione di ArubaSign e di eseguirlo in modo nascosto dopo alcuni secondi che gli utenti a cui si desidera distribuire l’applicazione hanno fatto log on. L’utilità di eseguire l’installazione in modalità nascosta è quella di non interferire con l’attività dell’utente.

A tale scopo ho realizzato uno script PowerShell che provvede ad installare la versione a 64 bit di ArubaSign senza necessità di privilegi amministrativi tramite l’esecuzione delle seguenti operazioni:

  1. Verifica se l’applicazione ArubaSign è installata nel sistema.
  2. Se l’applicazione non è istallata e non viene rilevato un pacchetto msi con data di download posteriore alla data dell’msi reso disponibile online lo script provvede al download dell’msi, quindi si provvede all’installazione del pacchetto msi.
  3. L’esito di ogni fase viene registrata in un file log nella stessa directory in cui è memorizzato lo script.

Lo script PowerShell e lo script DOS per l’avvio delle script POwerShell sono disponibili nel mio repository su GitHub PowerShell/ArubaSign at master · ermannog/PowerShell (github.com).

Per distribuire ArubaSign tramite lo script PowerShell è possibile creare una GPO Utente che svolga le seguenti operazioni:

Creazione tramite Group Policy Preferences di una directory locale al computer nascosta in cui copiare i file necessari.

Copia tramite Group Policy Preferences da una share di rete nella cartella locale dei file necessari all’automazione della distribuzione di ArubaSign impostandoli in sola lettura:

  • Install-ArubaSign.ps1 (lo script PowerShell che automatizzerà l’installazione di ArubaSign)
  • Install-ArubaSign.cmd (lo script DOS che permetterà di avviare lo script PowerShell)
  • RunHidden.exe (il tool a riga di comando che permetterà di avviare lo script Install-ArubaSign.cmd in modalità nascosta, a riguardo di veda RunHidden – DevAdmin Blog)
  • ArubaSign-latest(standard).msi (il pacchetto di installazione msi se si vuole evitare che ogni client ne esegua il download, ma in ogni caso lo script Install-ArubaSign.ps1 può gestire il download dell’msi se il pacchetto msi locale non esiste o non è aggiornato)

Per l’esecuzione dello script sarebbe possibile utilizzare uno script di Accesso utente, ma io ho preferito usare una operazione schedulata per avviare lo script con un tempo di ritardo di 30 secondi dopo il log on dell’utente, inoltre l’operazione schedulata permette l’avvio manuale dell’installazione in caso di necessità.

Affinché l’operazione pianificata creata tramite Group Policy Preferences funzioni correttamente è necessario impostare la modalità Crea in quanti le modalità Aggiorna e Sostituisci andando a rivalutare l’operazione pianificata al log on dell’utente durante l’aggiornamento della GPO talvolta impediscono l’avvio dell’operazione pianificata. L’operazione pianificata utilizzerà RunHidenn per l’avvio in modalità nascosta dello script Install-ArubaSign.cmd.

Nel caso in cui su un computer lavorino più utenti a cui si intende distribuire l’applicativo nasce un problema se il nome dell’operazione pianificata è uguale per tutti gli utenti. Infatti in questo caso l’operazione pianificata verrà creata alla connessione del primo utente, ma non verrà più ricreata per gli altri utenti in quanto esiste già un’operazione pianificata con lo stesso nome come indicato anche in Working with Control Panel Settings Preference Items Using the GPMC | Microsoft Learn:

Name Type a name for the task. This name will appear in the list of tasks in Task Scheduler under Administrative Tools. To change or delete a task, this name must match the name of the existing task as it appears in Task Scheduler. Preference items that configure tasks with the same task name can conflict.

Per ovviare a questa problematica è possibile impostare un nome dell’operazione pianificata differente per ciascun utente utilizzando la variabile %LogonUser%.