Я использую следующий сценарий powershell для Windows, чтобы определить, когда определенный том установлен, поэтому я могу запустить сценарий, который будет перемещать файлы с моей машины на устройство (I не знаю много о сценариях powershell, я нашел это онлайн).Обнаружение установки виртуального (TrueCrypt) тома в сценариях PowerShell
#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 представляет собой физический внешний жесткий диск и F является TrueCrypt контейнер в G. Когда сценарий обнаруживает правильное устройство монтируется как G, он спит 5 секунд, чтобы дать TrueCrypt время для монтирования F, а затем бежит скрипт, найденный на F. Похоже, что события изменения тома генерируются только тогда, когда физический диск подключен/отключен (по крайней мере, это единственный случай, когда сценарий получает событие), поскольку оставляя G подключенным и устанавливая/демонтируя F, не запускает сценарий ,
Я хотел бы иметь возможность обнаруживать, когда контейнер truecrypt монтируется без изменения каких-либо изменений. На каком-то уровне это должно быть возможно, потому что Windows Explorer обновляет свои диски, когда контейнер монтируется или демонтируется. Я прочитал на win32_VolumeChangeEvent
, но я не смог ничего найти в связи с виртуальными дисками. Спасибо за помощь.
Здравствуйте, добро пожаловать в SO. Было бы лучше, если бы вы четко объяснили, что эти 2 ошибки. И вообще, добавление какого-то комментария или объяснения вместо того, чтобы просто давать код, лучше. Поэтому, пожалуйста, отредактируйте свой ответ и попытайтесь описать, что он делает и как. Спасибо! –