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

我们公司正在寻求实施一项监控USB添加和删除的政策给我们的企业PC运行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脚本)。

此脚本写入系统事件日志,因此它应该以pipe理员权限运行。

要隐藏该程序并在后台运行,可以使用以下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设置一个启动项,以pipe理员身份login运行。 或者,您可以创build一个调用USBNotifier脚本的batch file,并创build一个用户定义的服务 。

如果您想安装PowerShell 2.0,则可以使用其事件处理function(无需PSEventing),也可以使用PS 2.0的后台作业function。

也许你会find更适合你的东西,但Devicelock对于这样的(和相关的)任务是非常好的