NotifyKace.vbs: nuova versione per gli agenti 8

| |

Un passo indietro: nei primi giorni di novembre ho pubblicato un articolo dedicato a un nuovo VBScript sviluppato per tenere d’occhio le installazioni degli agenti Kace nella rete aziendale, così da ricevere delle notifiche (mail) in caso di mancate installazioni o inventari non aggiornati. Trovi tutto qui:

Kace: un alert in caso di client mancante o inventario troppo vecchio

Cosa è cambiato rispetto al mese scorso? Quest (società separatasi da Dell nel 2016) ha rilasciato l’aggiornamento di Kace 8.0.318, il quale porta con sé anche il bundle di agenti 8.0.152. Questi ultimi, contrariamente al passato, si installeranno nella cartella %ProgramFiles%\Quest (%ProgramFiles(x86)%\Quest sui sistemi a 64 bit) anziché %ProgramFiles%\Dell. Il mio script, se distribuito sul tuo dominio, inizierà a inviarti delle notifiche per mancata installazione client, poiché anche il percorso nella %ProgramData% è variato (da %ProgramData%\Dell\KACE a %ProgramData%\Quest\KACE).

NotifyKace.vbs: nuova versione per gli agenti 8

Nello script pubblicato tra i miei Gist, avevo già previsto una banale variabile contenente la directory da monitorare, basterà variare quella per tornare a far funzionare il meccanismo, senza ulteriori falsi positivi (ne avrai ancora, di falsi positivi, se il client non avrà ancora ricevuto l’aggiornamento dell’agent alla versione 8.0.152, mettiti il cuore in pace). Ho lasciato stare il vecchio script (che si ferma così alla versione 0.2rev1) e ne ho salvato un altro (la 0.3), che trovi qui:


' Verifica esistenza servizio QUEST Kace (KONEA) e ultimo inventario
' ———————————————————————————————————–
' Author: GSolone
' Version: 0.3
' Last modified: 13-12-2017
' Credits: https://www.symantec.com/connect/downloads/vbscript-delete-old-files
' http://www.robvanderwoude.com/vbstech_network_ip.php
' http://www.robvanderwoude.com/vbstech_network_names_computer.php
' https://social.technet.microsoft.com/Forums/en-US/a8d29535-217e-46c0-bd94-0a203a322015/current-logged-in-user-using-vbscript?forum=ITCG
' https://gallery.technet.microsoft.com/scriptcenter/01fcf945-ad73-44e0-8cb5-152432bc6bcf
' https://rcmtech.wordpress.com/2011/04/15/vbscript-instr-with-the-and-operator/
' https://stackoverflow.com/questions/11879612/qtp-checking-if-an-array-of-strings-contains-a-value
' ————————————————————————————————————
' UPDATES:
' 0.3- allineato con Kace 8.0.318 e bundle agenti 8.0.152, la cartella di installazione dell'agent è adesso sotto %ProgramFiles(x86)%\Quest (si abbandona la \Dell), quella dei dati è sotto %ProgramData%\Quest. Modifico i puntamenti.
' 0.2 rev1- ho aggiunto una esclusione in lista e ho splittato l'array nella modalità "1 riga, 1 esclusione" (in ordine alfabetico)
' 0.2- ho fatto merge di tutti gli ignore dei vari domini (un solo script, copiato ovunque), utilizzando un Array di hostname da escludere.
Dim oFSO, oFolder, sDirectoryPath
Dim oFileCollection, oFile, sDir
Dim iDaysOld
sDirectoryPath = "C:\ProgramData\Quest\Kace"
Set objNTInfo = CreateObject("WinNTSystemInfo")
Set objMessage = CreateObject("CDO.Message")
Set oFSO = CreateObject("Scripting.FileSystemObject")
Set wshShell = CreateObject("WScript.Shell")
Set oFolder = oFSO.GetFolder(sDirectoryPath)
Set oFileCollection = oFolder.Files
Set objNetwork = CreateObject("Wscript.Network")
Set objSysInfo = Createobject("ADSystemInfo")
iDaysOld = 10
strComputerName = wshShell.ExpandEnvironmentStrings("%COMPUTERNAME%")
' ===== QUIT DALLO SCRIPT SE LO SCRIPT VIENE AVVIATO SU DETERMINATE MACCHINE ========================================================
Dim exclusions
exclusions = Array( "WIN7TEST", _
"WIN10TEST")
For j=Lbound(exclusions) to Ubound(exclusions)
If InStr(strComputerName, exclusions(j))> 0 Then
'MsgBox("Debug: found " & strComputerName & " at index " & j)
WScript.Quit
End If
Next
' ===== VERIFICA ESISTENZA SERVIZIO KONEA, QUINDI VERIFICA ULTIMO INVENTARIO ========================================================
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colRunningServices = objWMIService.ExecQuery("Select * from Win32_Service Where Name='konea'")
nItems = colRunningServices.Count
' If the collection count is greater than zero the service will exist.
If nItems > 0 Then
For each oFile in oFileCollection
'DEBUG: il file cacert.pem è sempre più vecchio dei 10 giorni (su macchine già avviate da tempo), si può utilizzare per verificare che lo script lo rilevi e invii alert mail:
'If oFile.Name = "cacert.pem" Then
If oFile.Name = "kinventory.db" Then
If oFile.DateLastModified < (Date() iDaysOld) Then
Destination = "tuonome@contoso.com"
DestinationCC = ""
DestinationBCC = ""
MailBody = "KACE Agent <strong>non connesso o non aggiornato</strong>, verificare quanto prima da console.<br /><br />" &_
"<li>Workstation: <strong>" & strComputerName & "</strong></li>"
strQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress > ''"
Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems = objWMIService.ExecQuery( strQuery, "WQL", 48 )
For Each objItem In colItems
If IsArray(objItem.IPAddress) Then
If UBound(objItem.IPAddress) = 0 Then
strIP = "<li>IP macchina: <strong>" & objItem.IPAddress(0) & "</strong></li>"
Else
strIP = "<li>IP macchina: <strong>" & Join( objItem.IPAddress, ", " ) & "</strong></li>"
End If
End If
Next
MailBody = MailBody & strIP &_
"<li>Utente connesso (se rilevato): <strong>" & objNetwork.UserName & "</strong></li>" &_
"<li>DN utente connesso (se rilevato): <strong>" & objSysInfo.UserName & "</strong></li>"
objMessage.Subject = "KACE Agent non aggiornato o non connesso su " & strComputerName
objMessage.From = "Alert Kace <kacealert@contoso.com>"
objMessage.To = Destination
objMessage.Cc = DestinationCC
objMessage.Bcc = DestinationBCC
objMessage.HTMLBody = MailBody
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.contoso.com"
objMessage.Configuration.Fields.Update
objMessage.Send
End If
End If
Next
Set oFSO = Nothing
Set oFolder = Nothing
Set oFileCollection = Nothing
Set oFile = Nothing
Else
Destination = "tuonome@contoso.com"
DestinationCC = ""
DestinationBCC = ""
MailBody = "KACE Agent <strong>non installato</strong>, installare quanto prima.<br /><br />" &_
"<li>Workstation: <strong>" & strComputerName & "</strong></li>"
strQuery = "SELECT * FROM Win32_NetworkAdapterConfiguration WHERE MACAddress > ''"
Set objWMIService = GetObject( "winmgmts://./root/CIMV2" )
Set colItems = objWMIService.ExecQuery( strQuery, "WQL", 48 )
For Each objItem In colItems
If IsArray(objItem.IPAddress) Then
If UBound(objItem.IPAddress) = 0 Then
strIP = "<li>IP macchina: <strong>" & objItem.IPAddress(0) & "</strong></li>"
Else
strIP = "<li>IP macchina: <strong>" & Join( objItem.IPAddress, ", " ) & "</strong></li>"
End If
End If
Next
MailBody = MailBody & strIP &_
"<li>Utente connesso (se rilevato): <strong>" & objNetwork.UserName & "</strong></li>" &_
"<li>DN utente connesso (se rilevato): <strong>" & objSysInfo.UserName & "</strong></li>"
objMessage.Subject = "KACE Agent non installato " & strComputerName
objMessage.From = "Alert Kace <kacealert@contoso.com>"
objMessage.To = Destination
objMessage.Cc = DestinationCC
objMessage.Bcc = DestinationBCC
objMessage.HTMLBody = MailBody
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objMessage.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.contoso.com"
objMessage.Configuration.Fields.Update
objMessage.Send
End If

view raw

NotifyKace.vbs

hosted with ❤ by GitHub

Per tutto il resto c’è MasterCard puoi consultare il vecchio articolo, tenendo presente che tutto resta identico ad eccezione delle cartelle del software (modifica Dell con Quest e il gioco è sempre fatto).

Buon lavoro!

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! :-)

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