J'utilise le script powershell suivant pour détecter quand un volume particulier est monté afin que je puisse exécuter un script qui déplacera les fichiers de ma machine vers le périphérique (je ne connais pas beaucoup les script powershell, je l'ai trouvé en ligne).
#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 est un disque dur externe physique et F est un conteneur truecrypt dans G. Lorsque le script détecte que le bon périphérique est monté en tant que G, il dort 5 secondes pour donner à truecrypt le temps de monter F, puis exécute le script trouvé sur F. Il semble que les événements de changement de volume ne soient générés que lorsque le lecteur physique est connecté/déconnecté (du moins, c'est le seul moment où le script reçoit un événement), car laisser G connecté et monter/démonter F ne déclenche pas le script. J'aimerais pouvoir détecter quand le conteneur truecrypt est monté sans que rien d'autre ne change. À un certain niveau, cela doit être possible, car l'explorateur Windows met à jour son affichage des lecteurs lorsque le conteneur est monté ou démonté. Merci pour votre aide.