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
Hola nixda y gracias por tu respuesta. Ya he modificado el script pero aún no detecta la tarjeta SD. La razón principal (creo) por la que el script no funciona es si tiene un lector de tarjetas SD incorporado, y expulsa la tarjeta SD, aún puede encontrar el lector de tarjetas en Administración de discos con la letra asignada.
—
saygon
Creo que tienes razón sobre la letra de la unidad. Por eso pensé que la llegada del dispositivo no funcionaría. Ahora que leí MSDN nuevamente, dice que incluye cambios en la configuración del hardware (acoplamiento y desacoplamiento) . Por lo tanto, el acoplamiento probablemente tampoco funcionará. Hmmm
—
nixda
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?