Назад | Перейти на главную страницу

Отчетность о добавлении и удалении устройств в USB-хаб под Windows

Наша компания стремится внедрить политику мониторинга добавления и удаления USB-накопителей на наших корпоративных ПК с операционной системой Windows. Мы знаем, что можем просто заблокировать использование USB для пользователей с политиками при определенных условиях, но мы предпочитаем сообщать об этих изменениях в EventViewer, чтобы их можно было собирать и просматривать ежедневно, еженедельно и ежечасно.

Кто-нибудь знает какие-либо инструменты или опции, которые могут быть реализованы на платформе Windows. Мне действительно не нужна помощь с централизованным сбором информации, только надежная отчетность на уровне ПК.

Вы можете сделать это с помощью PowerShell.

Ваш сценарий будет выглядеть примерно так:

. .\eventhandler.ps1

function logEvent([string] $message)
{
    $evt=new-object System.Diagnostics.EventLog("System")
    $evt.Source = "USB Drive Watcher"
    $infoevent = [System.Diagnostics.EventLogEntryType]::Information
    $evt.WriteEntry($message,$infoevent,70)
}

$handleUSBEvent = {
    param ($sender, $args)
    $event = $args[1].NewEvent.__CLASS
    if ($event -eq "__InstanceCreationEvent")
    {
        logEvent("USB Drive Inserted")
    }
    elseif ($event -eq "__InstanceDeletionEvent")
    {
        logEvent("USB Drive Removed")
    }

}

$timespan = new-object System.TimeSpan(0,0,1)
$scope = new-object System.Management.ManagementScope("\\.\root\cimV2")
$query = new-object System.Management.WqlEventQuery("__InstanceOperationEvent",$timespan,"TargetInstance ISA 'Win32_LogicalDisk' AND TargetInstance.DriveType=2")
$watcher = new-object System.Management.ManagementEventWatcher($scope,$query)
$watcher.Start()
add-eventhandler (gv watcher) EventArrived $handleUSBEvent
Do-Events $false

Назовите этот файл чем-то вроде USBNotifier.ps1. Вам нужно будет скачать и установить PSEventing и файл EventHandler.ps1, находящийся в его Область загрузки.

Поскольку это неподписанный скрипт, вам нужно будет установить политику выполнения PowerShell в «RemoteSigned» (и щелкните правой кнопкой мыши «разблокировать» сценарий EventHandler.ps1).

Этот сценарий записывает в журнал системных событий, поэтому его следует запускать с правами администратора.

Чтобы сделать эту программу скрытой и работающей в фоновом режиме, вы можете использовать следующий VBScript:

Dim objShell

set objShell=CreateObject("WScript.Shell")

strPath = "c:\users\adam\desktop\USBNotification.ps1" 'The path to your script.

strCMD = "powershell -nologo -command " & Chr(34) & "&{" & strPath & "}" & Chr(34)

objShell.Run strCMD, 0

Этот файл сценария должен находиться в той же папке, что и сценарий USBNotifier.ps1 и сценарий EventHandling.ps1. Затем все, что вам нужно сделать, это установить элемент запуска для этого VBScript, который будет запускаться при входе в систему как администратор. В качестве альтернативы вы можете создать командный файл, который вызывает сценарий USBNotifier и создать пользовательский сервис.

Если вы хотите установить PowerShell 2.0, вы, вероятно, можете использовать его возможности обработки событий (устраняя необходимость в PSEventing), а также можете использовать функциональность фоновых заданий PS 2.0.

Возможно, вы найдете что-то более простое, подходящее именно вам, но Блокировка устройства очень хорош для таких (и связанных) задач