Computer accesi e non usati, uno spreco ambientale

Individuare i computer accesi e non usati per entrare in armonia.
Nel nostro quotidiano ci viene sempre più frequentemente chiesto di usare Datto RMM per accendere tutte le mattine determinati computer, in modo che gli utilizzatori li trovino pronti al login al loro arrivo in ufficio.
La richiesta ha dei lati positivi, uno è quello di poter veicolare delle consistenti operazioni di manutenzione prima dell’arrivo dell’utilizzatore.
Chi ci chiede di accendere in automatico i computer, ci chiede anche di spegnerli in modo forzato dopo un certo orario, questo per via del fatto che l’automatismo di accensione porta l’umano al non pensare allo spegnimento.
In questo approccio manca un elemento importante, il cliente dovrebbe comunicare quando i collaboratori sono in ferie, in trasferta, in malattia, etc.
L’informazione è importante per evitare che le postazioni vengano accese per poi non essere utilizzate, limitandosi a consumare corrente scaldando l’ufficio, con un conseguente maggior funzionamento degli impianti di climatizzazione. Il tutto si traduce in maggiori costi energetici, usura dei computer e trasferimento dell’impatto sull’ambiente.
Tabella dei Contenuti
Scarica qui il componente per datto rmm
Come troviamo i computer dormienti
Per individuare questi computer abbiamo deciso di creare un semplice monitor per RMM, il suo scopo è quello di individuare in funzionamento almeno uno dei programmi aperti dall’utente.
I programmi tipicamente usati sono gli elementi della suite office e i programmi degli eventuali client dei sistemi gestionali. La ricerca diventa semplice per chi utilizza un client di posta aperto durante tutto il periodo di lavoro.
Il monitor deve semplicemente cercare nella lista dei processi attivi la presenza di questi programmi e nel caso non li trovasse innescare una segnalazione.
La gestione delle segnalazioni deve tener conto di alcune situazioni prima di scalare l’allarme ad un livello superiore; pertanto, abbiamo ritenuto di innescare l’allarme maggiore solo dopo le ore 9:30 e solo dopo che la segnalazione è rimasta attiva per almeno 45 minuti.
Potevamo operare sugli eventi di sistema, cercando le informazioni di login al computer o ad Active Directory; tuttavia, delle precedenti esperienze ci hanno fatto scartare questa ipotesi, che avrebbe portato ad una procedura più pesante e con un alto indice di errore.
Il codice di base che abbiamo realizzato
La procedura monitor che abbiamo realizzato è molto compatta e di semplice modifica per adattarlo ad altri RMM, andando nel caso ad associare un meccanismo di spegnimento automatico.
Il codice in breve è il seguente.
$ProcessList = $ENV:ProcessList
$ENV:ErrorType = "Monitor"
$TempAEM = "C:\TempAEM"
$TempFlag = "C:\TempAEM\UserLess"
if ([string]::IsNullOrEmpty($ProcessList)) {
Set-DRMMError -FErrorMessage "ERROR - PROCESSLIST parameter inconsistent."
}
$ProcessList = $ProcessList.Split(",") | ForEach-Object { $_ + "*" }
$ProcessRun = Get-Process -Name $ProcessList -ErrorAction:SilentlyContinue
if ($ProcessRun.count -eq 0) {
if (!(Test-Path $TempFlag)) {
Set-RegistryValue -FPath "HKLM:\\SOFTWARE\CentraStage" -FField "Custom13" -FValue "INFO: Userless computer."
New-Item -Path $TempAEM -Name "UserLess" -ItemType "Directory"
}
else {
$AlertWriteTime = (Get-Item -Path $TempFlag).LastWriteTime
if ((get-date) -gt "09:30" -and (get-date).AddMinutes(-45) -gt $AlertWriteTime) {
Set-RegistryValue -FPath "HKLM:\\SOFTWARE\CentraStage" -FField "Custom13" -FValue "WARNING: Userless computer."
}
}
}
else {
Set-RegistryValue -FPath "HKLM:\\SOFTWARE\CentraStage" -FField "Custom13" -FValue -""
if (Test-Path $TempFlag) {
Remove-Item -Path $TempFlag -Force -Confirm:$false
}
}
La Riga 1 intercetta la lista di processi da individuare e che è fornita come parametro del monitor, i cui valori sono separati da una virgola. Il nome del processo può anche non essere completo, viene infatti elaborata anche una sezione della parte iniziale (Outl invece di Outlook).
La Riga 3 crea una variabile di ambiente associata alla sessione, pertanto temporanea, è necessaria per definire l’output di errore usato dai nostri moduli.
La Riga 5 identifica il percorso di salvataggio dei file che fungono da flag per il funzionamento di alcune procedure.
La Riga 6 identifica il percorso della cartella flag utilizzata da questa procedura, la sua funzione è quella di fornire un riferimento temporale sull’ora di generazione della segnalazione.
La condizione da Riga 8 a Riga 10 verifica che il parametro del monitor sia stato compilato e in caso contrario interrompe la procedura generando un allarme.
La Riga 12 concatena due operazioni andando a generare un array con i valori di input modificati. Il metodo split separa il contenuto della stringa del parametro usando la virgola come delimitatore. Il successivo passaggio fornisce attraverso una pipeline i contenuti generati ad un ciclo foreach, che modifica i valori aggiungendo un asterisco alla fine del nome programma da cercare. La presenza dell’asterisco rende possibile la ricerca di nomi parziali del processo.
La Riga 14 con il cmdlet Get-Process cerca nei processi attivi i programmi contenuti nell’array precedentemente generato. L’uso del argomento ErrorAction:SilentlyContinue permette al comando di completare la ricerca senza segnalare errori di esecuzione per i processi cercati e non trovati. Il risultato della ricerca è un array contenente l’output dei processi trovati.
Nell’elaborazione dei contenuti trovati non andremo a considerare le informazioni relative ai processi, semplicemente utilizzeremo il contatore dei contenuti dell’array generato dalla ricerca.
La condizione della Riga 16 attiva il codice relativo se il contatore dei contenuti del array è pari a zero, che corrisponde a nessun programma individuato. Questo stato equivale per la nostra modalità di ricerca al fatto che il computer non è utilizzato. Le operazioni dalla Riga 16 alla Riga 27 operano sui Custom Field variandone lo stato sulla base di quanto rilevato.
La condizione della Riga 17 valuta l’esistenza della directory di flag, condizione che equivale ad un precedente stato di allarme in corso. Dalla Riga 17 alla Riga 20 viene attivato il primo allarme.
La Riga 18 modifica le chiave di registro per attivare l’alimentazione del Custom Field con il valore informativo previsto, dopo questa azione il ciclo di monitoraggio di Datto RMM trasferisce il valore assegnato nel database del RMM. L’impiego del cmdlet Set-RegistryValue richiede l’installazione dei nostri moduli Powershell, in alternativa è possibile utilizzare il cmdlet New-Item.
La Riga 19 crea la directory di flag ancora non esistente usando il cmdlet New-Item.
Dalla Riga 21 alla Riga 26 sono eseguite le azioni nel caso in cui sia già presente un avviso e di conseguenza la directory flag.
La Riga 22 determina la data e tempo di creazione della directory flag.
La condizione della Riga 23 verifica che l’orario sia successivo alle 9:30 e che la precedente segnalazione sia stata inserita almeno 45 minuti prima. Quando la condizione è valida la Riga 24 modifica il messaggio inserito nel custom field, passando da informativo a warning.
Il blocco finale del codice è eseguito se la condizione della Riga 16 è falsa, ovvero se sono stati trovati dei programmi in esecuzione.
La Riga 29 cancella il custom field annullando le segnalazioni nel RMM.
La Riga 31 cancella la directory flag se esiste.
La raccolta delle informazioni
I contenuti inseriti nei custom field permettono la creazione di specifici filtri di ricerca, permettendo di isolare i computer in uno specifico stato.
Nel nostro caso abbiamo due filtri che raccolgono i sistemi accesi, l’uno cercando la presenza della parola INFO e l’altro della parola WARNING. In base ai nostri criteri i sistemi in info sono ancora tollerabili, mentre i sistemi in warning necessitano di una verifica e delle opportune azioni.
Conclusioni
Il monitor realizzato ci permette di procedere con delle azioni, di cui la più elementare è chiedere al cliente se le persone che utilizzano i computer allarmati sono fuori azienda e per quanto tempo, così da procedere con uno spegnimento anticipato o con la sospensione dell’accensione.
Con piccole modifiche il componente può essere utilizzato per agire in modo autonomo e spegnere i computer rilevati come inutilizzati, oppure per essere impiegato con diverse tipologie di RMM.
Questo tipo di automatizzazione permette di evitare che nei periodi di chiusura i computer continuino ad accendersi, spesso in assenza di condizionamento, generando due situazioni:
- Consumi non giustificati
- Riscaldamento dei sistemi per mancanza di climatizzazione e potenziali guasti o incendi.
L’inserimento di un ritardo di 45 minuti permette di minimizzare il rischio di identificare dei computer come inutilizzati, mentre sono utilizzati aprendo e chiudendo i programmi.
Per maggiori informazioni sull’uso e la realizzazione degli script di automazione leggi questo articolo e contattaci senza impegno.
I componenti distribuiti sono forniti senza alcuna garanzia. Non vi sono garanzie che il software soddisfi le vostre esigenze o sia esente da errori. In nessun caso gli sviluppatori saranno responsabili per eventuali danni.
I componenti proposti sono stati collaudati nel modo più esaustivo possibile e sono utilizzati in modo regolare in ambienti di produzione, durante il loro utilizzo non si sono verificate anomalie di funzionamento.
Articoli recenti
- ShellBag – un viaggio allucinante nei ricordi di Windows
- La donazione di sangue nei cani: importanza, modalità e compatibilità
- Il Manto del Cane: Un Viaggio alla Scoperta della Sua Pelle e del Suo Pelo
- Proteggi il tuo cane dal caldo: prevenzione e riconoscimento della disidratazione
- Monitoraggio e Verifica delle Configurazioni di Rete: Una Soluzione Efficace con PowerShell e Datto RMM
Archivi
Prossimi eventi
Non ci sono eventi imminenti.
Iscriviti alla nostra Newsletter
Automatizzare in autonomia
Un progetto parallelo ambientato nella Tuscia Sutrina: piante da giardino locali, tecniche di coltivazione, storia e leggende del territorio, racconti fantasy a tema. Botanica, cultura e tradizioni in un unico spazio.
A volte basta una breve pausa per ritrovare la concentrazione: qualche minuto tra verde e fantasia può aiutare a tornare al lavoro con nuove idee.
Visita il sito