我想使用 PowerShell 检测是否存在 SD 卡。检测到 SD 卡后,PowerShell 脚本应自动将一些文件复制到 SD 卡。
我已经找到并尝试了 PS 脚本,但它只能检测 USB 记忆棒。
Register-WmiEvent -Class win32_VolumeChangeEvent -SourceIdentifier volumeChange
write-host (get-date -format s) " Beginning script..."
do{
$newEvent = Wait-Event -SourceIdentifier volumeChange
$eventType = $newEvent.SourceEventArgs.NewEvent.EventType
$eventTypeName = switch($eventType)
{
1 {"Configuration changed"}
2 {"Device arrival"}
3 {"Device removal"}
4 {"docking"}
}
write-host (get-date -format s) " Event detected = " $eventTypeName
if ($eventType -eq 2)
{
$driveLetter = $newEvent.SourceEventArgs.NewEvent.DriveName
$driveLabel = ([wmi]"Win32_LogicalDisk='$driveLetter'").VolumeName
write-host (get-date -format s) " Drive name = " $driveLetter
write-host (get-date -format s) " Drive label = " $driveLabel
# Execute process if drive matches specified condition(s)
if ($driveLetter -eq 'E:' -and $driveLabel -eq 'Test 1')
{
write-host (get-date -format s) " Starting task in 3 seconds..."
start-sleep -seconds 3
start-process "E:test.bat"
}
}
Remove-Event -SourceIdentifier volumeChange
} while (1-eq1) #Loop until next event
Unregister-Event -SourceIdentifier volumeChange
答案1
当您在 Windows 中打开 USB 或 SD 卡时,它会将“虚拟磁盘服务”的启动记录到 Windows 中的系统事件日志中。
考虑到这一点:
- 插入您的 SD 卡,然后在事件查看器中打开系统日志。
- 顶部(或靠近顶部)是“虚拟磁盘服务”。
- 突出显示该条目,然后单击下面的“详细信息”选项卡。
- 如果需要,请单击“系统”旁边的加号。
- 其中将包含 SD 卡的正确“EventID”,因此请将其用于您的脚本。
- 现在右键单击相同的“虚拟磁盘服务”(来自步骤 2)
- 选择“将任务附加到此事件...”
- 按照“创建基本任务向导”的步骤操作,然后选择“启动程序”。
- 输入 PowerShell 脚本的路径并选择“完成”。