Problema com o VBScript para detectar quando um usb é inserido e verificar se ele está criptografado

0

Estou tentando escrever um vbscript que pode ser enviado pelo KACE K1000 e executado em segundo plano nas máquinas que temos em nossa rede para detectar sempre que um usuário conecta sua unidade flash / unidade externa e verificar se elas re criptografado.

Se a unidade não estiver criptografada, envie um aviso / mensagem informando ao usuário para criptografar a unidade. Se a unidade já estiver criptografada, não faça nada, continue normalmente. O sistema operacional com o qual estou trabalhando é o Windows 7 e o 10.

O script que tenho até agora é:

    strComputer = "." 

//check instant event for usb detection

    Set wmi = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
    Set wmiEvent = wmi.ExecNotificationQuery("select * from __InstanceOperationEvent within 1 where TargetInstance ISA 'Win32_PnPEntity' and TargetInstance.Description='USB Mass Storage Device'")

//check to see if the drive is encrypted 

    Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\CIMV2\Security\MicrosoftVolumeEncryption") 
    Set colItems = objWMIService.ExecQuery( _
        "SELECT * FROM Win32_EncryptableVolume",,48) 

    While True

    Case "__InstanceCreationEvent"  

    For Each objItem in colItems 

    If objItem.ProtectionStatus = 0 then

    Wscript.Echo "Unencrypted drive is detected, please encrypt drive " & objItem.DriveLetter

    else 
        end if 
    Next
    Wend

Eu entendo que não está funcionando no momento e eu sou muito novo no vbscript e no wmi, então qualquer ajuda seria ótima. Eu tenho o script até agora no googling antes de decidir pedir ajuda.

Se vocês tiverem alguma outra maneira de fazer o que eu estou tentando fazer, isso também seria ótimo. Nós usamos o kace k1000 para gerenciar nossas máquinas, então eu preciso ser capaz de passar o script por lá.

Obrigado

    
por scriptingnewb 20.12.2016 / 19:44

1 resposta

0

O script (parcialmente comentado) funciona no ambiente Windows e não consigo prever a interação kace k1000 :

option explicit
On Error GoTo 0
Dim strResult, strComputer, wmi, wmiEvent , objWMIService, objItem, colItems, objEventObject
strComputer = "." 
Set objWMIService = GetObject("winmgmts:\" & strComputer _
  & "\ROOT\CIMV2\Security\MicrosoftVolumeEncryption")       ' requires elevation
Set wmi = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
' //check instant event for Logical Disk detection
Set wmiEvent = wmi.ExecNotificationQuery( _
    "select * from __InstanceOperationEvent within 1 " _
  & "where TargetInstance ISA 'Win32_LogicalDisk'")
While True
    ''  tell the script to wait until the next event of interest occurs
    Set objEventObject = wmiEvent.NextEvent()
    Select Case objEventObject.Path_.Class
        Case "__InstanceCreationEvent"
          '//check to see if the drive is encrypted 
          Set colItems = objWMIService.ExecQuery( _
              "SELECT * FROM Win32_EncryptableVolume",,48) 
          For Each objItem in colItems 
            If objItem.ProtectionStatus = 0 then
              strResult = strResult & vbNewLine & ":" & _
                objEventObject.TargetInstance.Description & _
                  ": Unencrypted drive " & objItem.DriveLetter
            End If 
          Next
        Case "__InstanceDeletionEvent"     '' merely for debugging
          strResult = strResult & vbNewLine & ":" & _
            objEventObject.TargetInstance.Description & ": An event was just deleted" 
    End Select
    If strResult <> "" Then Wscript.Echo Wscript.ScriptName & vbNewLine & strResult
    strResult = ""
 Wend

'' REMARK ''
'' //check instant event for usb detection
'' -- unsuccessful as 'TargetInstance.Description' could vary for different drives
' Set wmiEvent = wmi.ExecNotificationQuery( _
'     "select * from __InstanceOperationEvent within 1 " _
'   & "where TargetInstance ISA 'Win32_PnPEntity'" _
'   & " and ( TargetInstance.Description='USB Mass Storage Device'" _
'   & "    or TargetInstance.Description='USB Flash Memory'" _ 
'   & "    or TargetInstance.Description='Disk drive')")

Aqui está uma explicação completa: Como posso monitorar diferentes tipos de eventos com apenas um script e Como posso determinar quando uma unidade removível é conectada

    
por 15.01.2017 / 02:14