ServiceDesk Plus: recuperare lo spazio disco occupato dagli aggiornamenti con uno script

| |

L’avevo già usato in passato, mai pubblicato e neanche mai ritoccato, si tratta di uno script (VBScript) che mi permette rapidamente di andare a recuperare lo spazio disco occupato dai service pack di ServiceDesk Plus, i quali rimarranno vita-natural-durante a popolare la cartella “Patch” del server sul quale stai tenendo in vita l’applicativo.

Te ne avevo parlato nell’articolo ServiceDesk Plus: recuperare lo spazio disco occupato dagli aggiornamenti ma all’epoca portavo a termine la cosa a manina. L’ho poi automatizzata tramite uno script che – fornito un numero di giorni di cui tenere conto – rimuoveva file, cartelle e sottocartelle che superavano (come data) quei giorni da tenere da parte. In pratica l’idea era quella di cancellare tutti quei service pack più vecchi di “X” tempo.

Poi però mi sono accorto che questo non conveniva perché – insieme ai service pack – eliminavo anche lo storico degli aggiornamenti e dei file modificati. Certo è parzialmente utile mantenere queste informazioni senza però poter fare rollback, ma aiuta comunque a prendere una direzione più o meno precisa in caso di problemi. Per questo motivo, quel VBScript è stato modificato per svolgere sì il suo mestiere, ma ignorare quei file e cartelle dove si trovano le informazioni sugli aggiornamenti eseguiti sul software.

L’ho pubblicato su Gist, a tua completa disposizione:

'GSolone 2019
' ult.mod. 9/2/22: integro le eccezioni per cartelle e file da escludere dalla pulizia
' Credits:
' https://www.experts-exchange.com/questions/23543652/VBScript-to-delete-all-files-and-folders-in-a-directory.html
' https://www.automateexcel.com/vba/getfolder-getfile/
' https://superuser.com/a/1127074
strFolder = "C:\ManageEngine\ServiceDesk\Patch"
intDays = 0
' Non toccare nulla oltre questa riga / Don't modify anything after this line
Dim fileException, folderException, i
Dim lockedFolders(10), lockedFiles(10)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFolders = objFSO.GetFolder(strFolder)
objToday = Now()
objPastDate = DateAdd("d", intDays*-1, objToday)
lockedFolders(0) = "logs"
lockedFolders(1) = "tmp"
lockedFiles(0) = "inf.xml"
lockedFiles(1) = "specs.xml"
Recurse objFolders
Sub recurse(ByRef objFolders)
Set objSubFolders = objFolders.SubFolders
Set objFiles = objFolders.Files
For Each File In objFiles
'MsgBox("Debug: " & File.Name)
fileException = False
For i = LBound(lockedFiles) to UBound(lockedFiles)
If lCase(File.Name) = lCase(lockedFiles(i)) Then
fileException = True
Exit For
End If
Next
If Not fileException Then
If File.DateLastModified < objPastDate Then
On Error Resume Next
File.Delete
End If
Else
'MsgBox("Exception found: " & File.Name)
End If
Next
For Each Folder In objSubFolders
'MsgBox("Debug: " & Folder.Name)
folderException = False
For i = LBound(lockedFolders) to UBound(lockedFolders)
If lCase(Folder.Name) = lCase(lockedFolders(i)) Then
folderException = True
Exit For
End If
Next
If Not folderException Then
If Folder.DateLastModified < objPastDate Then
On Error Resume Next
objFSO.DeleteFolder Folder.Path, True
Else
recurse Folder
End If
Else
'MsgBox("Exception found: " & Folder.Name)
End If
Next
Set objSubFolders = Nothing
Set objFiles = Nothing
End Sub

Sappi solo che:

  • i giorni impostati in maniera predefinita sono 0 (intDays = 0), quindi cancellerà qualsiasi cosa, anche se recentissima). Puoi modificare il valore numerico e portarlo a – per esempio – 30, per chiedere allo script di cancellare ciò che supera il mese di vita.
  • La cartella impostata come predefinita è la ManageEngine nel disco C:\, senza tenere conto che l’installazione di solito suggerisce di usare la cartella Program Files, quindi andrà modificata la strFolder = "C:\ManageEngine\ServiceDesk\Patch" per puntare alla reale cartella delle patch del tuo ServiceDesk Plus (probabilmente strFolder = "C:\Program Files\ManageEngine\ServiceDesk\Patch").
  • I file tenuti fuori dalla pulizia sono inf.xml e specs.xml, mentre le cartelle sono logs e tmp. Puoi modificare questi parametri andando a ritoccare ciò che vedi come lockedFiles(0) e lockedFiles(1), ma anche lockedFolders(0) e lockedFolders(1). Potrai aggiungere altre esclusioni semplicemente inserendo nuovi campi del vettore (quindi lockedFiles(2), lockedFiles(3) e così via fino a lockedFiles(10), così come per le cartelle lockedFolders(2), lockedFolders(3) e via dicendo, anche questo fino a lockedFolders(10)). In teoria non dovrebbe però essere necessario.

Doppio clic sullo script per eseguirlo “senza troppe domande“, puoi anche creare un’operazione programmata nel Pannello di Controllo di Windows per ripetere l’operazione a intervalli regolari se necessario. In caso di dubbi, già sai, l’area commenti è a tua disposizione :-)

#StaySafe


Immagine di copertina Gary Chan on Unsplash

Correzioni, suggerimenti? Lascia un commento nell'apposita area qui di seguito o contattami privatamente.
Ti è piaciuto l'articolo? Offrimi un caffè! ☕ :-)

L'articolo potrebbe non essere aggiornato

Questo post è stato scritto più di 5 mesi fa, potrebbe non essere aggiornato. Per qualsiasi dubbio ti invito a lasciare un commento per chiedere ulteriori informazioni! :-)

Pillole

Le pillole sono articoli di veloce lettura dedicati a notizie, script o qualsiasi altra cosa possa essere "divorata e messa in pratica" con poco. Uno spazio del blog riservato agli articoli "a bruciapelo"!
Se vuoi leggere le altre pillole fai clic qui.

Condividi l'articolo con i tuoi contatti:
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Commenti
Inline Feedbacks
View all comments