Vil*_*nen 5 windows-7 autorun scheduled-tasks
我发现Windows 7 不允许在 USB 驱动器上自动运行。
是否可以通过使用任务计划程序设置任务来规避这一点(以安全的方式),插入 USB 驱动器时会触发该任务?乍一看,我找不到任何与事件查看器相关的事件。
我和你有同样的问题,并使用 Scripting Guy 博客(此处和此处)中的技术使用 powershell(Windows 内置脚本)解决了一些问题。该脚本作为后台进程持续运行,您可以在系统登录时使用任务计划程序启动该进程。每当插入新驱动器时,脚本就会收到通知,然后执行某些操作(此处您配置脚本而不是任务)。由于它在等待下一个插入的驱动器时基本上暂停,因此您不应该发现它占用太多资源。我来啦:
\n\n1) 启动 Powershell ISE,可以在开始菜单的 Accessories/Windows Powershell 下找到它。
\n\n2)将以下内容复制粘贴到Powershell中。
\n\n\n#需要 -version 2.0\nRegister-WmiEvent -Class win32_VolumeChangeEvent -SourceIdentifier volumeChange\nwrite-host (get-date -format s) " 开始脚本..."\ndo{\n $newEvent = Wait-Event -SourceIdentifier volumeChange \n $eventType = $newEvent.SourceEventArgs.NewEvent.EventType\n $eventTypeName = switch($eventType)\n {\n 1 {"配置已更改"}\n 2 {"设备到达"}\n 3 {"设备删除"}\n 4 {"对接"}\n }\n write-host (get-date -format s) " 检测到事件 = " $eventTypeName\n if ($eventType -eq 2)\n {\n $ driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName\n $driveLabel = ([wmi]"Win32_LogicalDisk=\'$driveLetter\'").VolumeName\n write-host (get-date -format s) " 驱动器名称 = " $driveLetter\n write-host (get-date -format s) " Drive label = " $driveLabel\n # 如果驱动器符合指定条件则执行进程\n if ($driveLetter -eq \'Z:\' -和 $driveLabel -eq \'Mirror\')\n {\n write-host (get-date -format s) " 在 3 秒内启动任务..."\n start-sleep -seconds 3\n start-process "Z:\\sync.bat"\n }\n }\n Remove-Event -SourceIdentifiervolumeChange\n} while (1-eq1) #循环直到下一个事件\nUnregister-Event -SourceIdentifiervolumeChange\n\n\n3)您需要修改上面的脚本,告诉脚本要查找什么驱动器,以及要执行什么。要更改的两行是:
\n\nif ($driveLetter -eq \'Z:\' -and $driveLabel -eq \'Mirror\')
我的名为“Mirror”的 USB 硬盘被设置为 Z: 驱动器。if ($driveLabel -eq \'MyDiskLabel\')如果您不关心这封信,您可以直接使用。
start-process "Z:\\sync.bat"
您想要执行的任何任务的路径。在我的示例中,我在 USB 驱动器上创建了一个批处理文件,该文件启动 3-4 个备份任务,但它可以是任何内容。
4) 完成后,将脚本保存在某个位置(扩展名 .ps1),然后在任务计划程序中创建一个任务,让脚本在后台运行。我的看起来像这样:
\n\n5) 瞧\xc3\xa0!
\n\n6) 额外的东西:\n如果您希望隐藏脚本窗口,请使用以下参数:
\n\n如果要将脚本消息输出到日志文件(每次脚本启动时(即登录时)都会被覆盖),请使用以下任务操作:
\n\n任何时候你想结束正在运行的隐藏脚本,都可以在任务管理器中结束“Powershell”进程。
\n| 归档时间: |
|
| 查看次数: |
10453 次 |
| 最近记录: |