Estoy usando el siguiente script de PowerShell para detectar cuándo se monta un volumen en particular para poder ejecutar un script que moverá los archivos de mi máquina al dispositivo (no sé mucho sobre los scripts de PowerShell, encontré esto en línea).
#Requires -version 2.0
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 'G:' -and $driveLabel -eq 'My Book')
{
write-host (get-date -format s) " Starting task in 5 seconds..."
start-sleep -seconds 5
start-process "F:\copy_backups.bat"
}
}
Remove-Event -SourceIdentifier volumeChange
} while (1-eq1) #Loop until next event
Unregister-Event -SourceIdentifier volumeChange
G es un disco duro externo físico y F es un contenedor de cripta verdadera dentro de G. Cuando el script detecta que el dispositivo correcto está montado como G, duerme 5 segundos para dar tiempo de cripta verdadera para montar F, y luego ejecuta el script encontrado en F. Aparece que los eventos de cambio de volumen solo se generan cuando la unidad física está conectada / desconectada (al menos esa es la única vez que el script recibe un evento), porque dejar G conectado y montar / desmontar F no activa el script. Me gustaría poder detectar cuándo se monta el contenedor truecrypt sin cambiar nada más. En algún nivel, esto debe ser posible, porque Windows Explorer actualiza las pantallas de sus unidades cuando el contenedor está montado o desmontado. Gracias por la ayuda.