Me gustaría usar PowerShell para detectar si hay una tarjeta SD allí. Después de detectar una tarjeta SD, un script de PowerShell debe copiar automáticamente algunos archivos a la tarjeta SD.
Ya encontré y probé un script PS, pero solo detecta memorias 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
if ($eventType -eq 2)
aif ($eventType -eq 4)
. La secuencia de comandos no busca la llegada del Dispositivo (¿se agregó una nueva letra de unidad?) Sino el acoplamiento del nuevo hardware. ¿También asumo que ya cambiasteif ($driveLetter -eq 'E:' -and $driveLabel -eq 'Test 1')
a tus propias necesidades?Respuestas:
Cuando abre una tarjeta USB o SD en Windows, registra el inicio del "Servicio de disco virtual" en el Registro de eventos del sistema en Windows.
Con eso en mente:
fuente