AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 44306
In Process
KodeTitan
KodeTitan
Asked: 2009-07-23 13:41:47 +0800 CST2009-07-23 13:41:47 +0800 CST 2009-07-23 13:41:47 +0800 CST

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

  • 772

我们公司正在寻求实施一项政策,以监控我们运行 Windows 操作系统的公司 PC 的 USB 添加和删除。我们知道我们可以在特定条件下通过策略阻止用户使用 USB,但我们首选的选项是将这些更改报告到 EventViewer,以便可以每天、每周、每小时收集和审查这些更改。

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

hardware monitoring usb
  • 2 2 个回答
  • 260 Views

2 个回答

  • Voted
  1. Adam Brand
    2009-07-23T18:43:27+08:002009-07-23T18:43:27+08:00

    您可以使用 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
    

    This script file should be in the same folder as your USBNotifier.ps1 script and your EventHandling.ps1 script. Then all you need to do is set a startup item for this VBScript to run on login as administrator. Alternatively, you could make a batch file that calls the USBNotifier script and create a user-defined service.

    If you wanted to install PowerShell 2.0, you could probably make use of its event handling capabilities (eliminating the need for PSEventing), and you could also use the Background Jobs functionality of PS 2.0.

    • 1
  2. Sergey
    2009-07-23T13:49:19+08:002009-07-23T13:49:19+08:00

    可能您会发现更简单的适合您的东西,但Devicelock非常适合此类(和相关)任务

    • 0

相关问题

  • 硬盘驱动器故障 - 如何重新获得对驱动器的信心或利用它

  • 如何为服务水平协议定义适当的衡量标准?

  • 如何监控系统在哪里写/读磁盘?[关闭]

  • IP-KVM(在我的例子中是 ADDER Ipeps):轻松防火墙穿越

  • 非品牌笔记本电池?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve