Formazione e Tecnologia

Formazione

Un’ombra incombeva su di loro. Oltre le pareti trasparenti del capillare, era visibile una foresta di dendriti. Ogni loro ramificazione mandava un ritmico scintillio: ma ora le faville si propagavano più lentamente, sempre più lentamente. E al di là di un certo punto cessavano del tutto.

ShellBag - Viaggio nel cuore di Windows

ShellBag – Viaggio nel cuore di Windows

Colpito da una serie di quesiti la cui risposta erano altri quesiti, mi sono lanciato in una ricerca che mi ha spinto a cavalcare le correnti dei bit fino al centro del cervello di Windows, in quell’area particolare che è una sorta di memoria storica sconosciuta dei suoi trascorsi, o forse dovrei dire dei nostri.

In questo viaggio nel profondo un ringraziamento va all’assistente neurologo cibernetico Google.

I perché di una ricerca

Talvolta non ci sono spiegazioni al perché si cerchi qualcosa, semplicemente il bisogno di risposte ci porta a compiere azioni senza un motivo specifico, anche se nello specifico il motivo era comprendere dove il sistema operativo conserva le informazioni relative alle viste delle cartelle e al modo in cui i file contenuti sono ordinati e presentati con le diverse icone e anteprime.

Come spesso accade nelle ricerche finalizzate il ritrovamento conduce in tutta un’altra direzione.

La scoperta … o meglio dire riscoperta?

Vagando tra i registri e i motori di ricerca ecco che con il mio assistente neurologo cibernetico incappiamo in una serie di oggetti denominati shellbag, qualcosa che esiste da sempre, ma che… Continua a leggere

Lavoro di squadra tra software

Lavoro di squadra tra software

In un precedente articolo abbiamo visto come ottimizzare gli script Powershell, arrivando a creare dei moduli contenenti le funzioni utilizzate per le proprie attività di manutenzione.

Il modulo è quel passaggio che consente di avere sottomano delle funzioni usabili da più procedure e usabili direttamente dalla console Powershell del computer e del server, la loro combinazione permette di semplificare il lavoro ottenendo un “lavoro di squadra”, dove i membri della squadra sono i moduli realizzati e legati tra loro delle procedure che li impiegano.

Per noi individuare lo User ID degli utenti collegati richiede un solo comando (Get-AllUSID) e non diversi cmdlet e filtri combinati.

Arrivati all’uso dei moduli, il passaggio successivo è il distribuirli posizionandoli nel giusto percorso e generare in modo automatico il relativo manifesto.

La generazione del manifesto è ben documentata da Microsoft e in diversi blog, per accedere a queste informazioni è sufficiente avvalersi del consulente Google.

Per praticità riportiamo alcuni link di riferimento:

Appresi gli elementi di base per rendere disponibile un modulo, diventa importante trovare una strategia che permetta di posizionarli seguendo uno standard, in tal senso diventa utile automatizzare, usando degli script che con pochi parametri permettano di compiere le operazioni necessarie alla delivery, ancora meglio se usando un RMM.

Tabella dei Contenuti

Gli elementi… Continua a leggere

Programmare con stile

Programmare con stile

Il tempo impiegato per svolgere un’attività è un fattore fondamentale, è sempre opportuno trovare una via che permetta di risparmiarlo, in un’escursione si cerca sempre di seguire l’itinerario che permette di raggiungere le tappe previste con il percorso più diretto e nel minor tempo.

Quando si programma si tende a scrivere il codice nel modo in cui passa per la mente, inserendo più volte le medesime sequenze di codice o eseguendo dopo quello che sarebbe meglio eseguire prima.

Il risultato finale è un codice che richiede microsecondi in più di processazione, che sommati ai microsecondi di altre procedure, fanno perdere del tempo processore e della memoria impiegata per il caricamento e l’esecuzione dello script.

In presenza di un RMM lo script realizzato deve essere, con ottimizzazioni diverse, trasferito al computer che lo deve eseguire, un’azione che richiede a sua volta dei secondi di sincronizzazione che potrebbero essere sfruttati per altre operazioni.

Da diversi anni realizziamo procedure in Powershell per svolgere diverse tipologie di operazioni ed in questi anni abbiamo sempre più cercato di realizzare del codice pulito e comprensibile.

In questo articolo scriveremo di come abbiamo impostato la realizzazione dei nostri script per ottenere il meglio da loro e dai dispositivi su cui vengono eseguiti.

Tabella dei Contenuti

La comprensione del codice

Sarebbe un falso dire che iniziamo a scrivere lo script seguendo dei rigidi formalismi, anche noi iniziamo a scrivere inserendo i cmdlet un po’ a caso, per iniziare a valutare… Continua a leggere

Quale RMM?

Quale RMM?

Appurato che gli RMM di Datto e Atera si differenziano nell’esecuzione di script Powershell solo per quanto concerne la sintassi di utilizzo dei parametri, è abbastanza evidente che se più RMM hanno la medesima differenza, esiste la possibilità di istruire lo script per utilizzare la sintassi legata al RMM, questa opportunità permetterebbe di utilizzare un unico script per molteplici piattaforme RMM.

Un altro elemento che sicuramente si differenzia tra diversi RMM è il come gli script rendono disponibili le informazioni richieste o per innescare degli allarmi o degli eventi. Anche in questo caso, possiamo ipotizzare delle differenze di sintassi da gestire.

Gli elementi chiave sono due:

  • determinare la sintassi di acquisizione dei parametri dei componenti;
  • determinare come identificare l’RMM utilizzato.

Isolate le informazioni chiave non resta che procedere con la creazione dell’elemento di codice necessario, che potrebbe evolvere in una classe da installare nel Powershell dei computer gestiti, così da poter essere utilizzata come un comune cmdlet.

La via rapida adottata è quella di determinare quale servizio RMM è installato (Get-Service) e gestire la struttura dei parametri di conseguenza.

				
					if ((Get-Service -name "AteraAgent" -ErrorAction:SilentlyContinue)) {
  $NomeVariabile = "{[NomeVariabile]}"
}
elseif ((Get-Service -name "Datto RMM" -ErrorAction:SilentlyContinue)) {
  $NomeVariabile = $ENV:NomeVariabile
}

				
			

L’informazione relativa al RMM installato sui dispositivi può essere salvata in una variabile, così da poterla sfruttare molteplici volte all’interno dello script, la via più efficiente è l’utilizzo dell’istruzione switch, dove la variabile $RMM contiene la label assegnata al RMM individuato.

				
					$RMM&hellip; <a class="more-link" href="https://www.epolenghi.education/blog/un-solo-script-powershell-per-piu-rmm/">Continua a leggere<span class="meta-nav">&rarr;</span></a>
Usare i parametri in uno script RMM.

Usare i parametri in uno script RMM.

La maggiore difficoltà iniziando a scrivere script da utilizzare all’interno degli RMM è il come fornire dei parametri ai componenti che si vanno ad eseguire.

La metodologia è semplice, un po’ meno semplice è scoprire nella documentazione come rendere il parametro un valore utilizzabile.

Il poter fornire dei parametri ad uno script è un passaggio fondamentale per creare delle procedure utilizzabili nel modo più generalizzato possibile.

Ad esempio, senza parametri, per agire su un servizio del sistema operativo sarebbe necessario uno script distino per ogni azione e per ogni servizio:

Get-Service

Stop-Service

Start-Service

Restart-Service

Di base quattro componenti moltiplicati per ogni servizio su cui si intende operare.

L’uso di parametri rende possibile fornire in input il nome del servizio e l’azione che si intende eseguire, gestendo poi queste informazioni all’interno della procedura, il vantaggio finale è quello di avere un componente RMM unico per agire su qualsiasi servizio con qualsiasi azione possibile.

I parametri di Datto RMM

In Datto RMM l’inserimento e la definizione del parametro è eseguita all’interno del editor di creazione del componente.

I parametri compilati sono trascritti nelle variabili di ambiente della specifica sessione di lavoro; pertanto, per la loro lettura e il loro impiego è sufficiente utilizzare la seguente sintassi:

$ENV:NomeVariabile

Può essere comodo e consigliato copiare questa variabile in una variabile locale:

$NomeVariabile = $ENV:NomeVariabile

I parametri di Atera RMM

In Atera RMM i parametri del componente sono inseriti scrivendo il nome della… Continua a leggere