通过 PowerShell 检测是否已插入 SD 卡

通过 PowerShell 检测是否已插入 SD 卡

我想使用 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 中的系统事件日志中。

考虑到这一点:

  1. 插入您的 SD 卡,然后在事件查看器中打开系统日志。
  2. 顶部(或靠近顶部)是“虚拟磁盘服务”。
  3. 突出显示该条目,然后单击下面的“详细信息”选项卡。
  4. 如果需要,请单击“系统”旁边的加号。
  5. 其中将包含 SD 卡的正确“EventID”,因此请将其用于您的脚本。
  6. 现在右键单击相同的“虚拟磁盘服务”(来自步骤 2)
  7. 选择“将任务附加到此事件...”
  8. 按照“创建基本任务向导”的步骤操作,然后选择“启动程序”。
  9. 输入 PowerShell 脚本的路径并选择“完成”。

相关内容