报告 Windows 下 USB 集线器设备的添加和删除

报告 Windows 下 USB 集线器设备的添加和删除

我们公司正在寻求实施一项政策,以监控运行 Windows 操作系统的公司电脑上 USB 的添加和删除。我们知道,在某些条件下,我们只能通过政策阻止用户使用 USB,但我们更倾向于将这些更改报告给 EventViewer,以便可以按日、周、小时收集和查看它们。

有谁知道有什么工具或选项可以在整个 Windows 平台上实现。我不需要集中收集信息的帮助,只需要在 PC 级别进行可靠的报告。

答案1

您可以使用 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。您需要下载并安装事件处理程序以及其文件 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 的后台作业功能。

答案2

也许你会找到更简单的东西适合你,但是设备锁非常适合此类(及相关)任务

相关内容