我正在使用以下 windows powershell 脚本来检测何时安装了特定卷,因此我可以运行一个脚本,将文件从我的机器移动到设备(我对 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是G内的truecrypt容器。当脚本检测到正确的设备被挂载为G时,它会休眠5秒给truecrypt时间来挂载F,然后运行在F上找到的脚本。出现卷更改事件仅在物理驱动器连接/断开连接时生成(至少这是脚本接收事件的唯一时间),因为保持 G 连接和挂载/卸载 F 不会触发脚本。
我希望能够检测何时安装了 truecrypt 容器,而无需进行任何其他更改。在某种程度上,这必须是可能的,因为 Windows 资源管理器会在安装或卸载容器时更新其驱动器显示。我阅读了win32_VolumeChangeEvent
,但我找不到与虚拟驱动器相关的任何信息。谢谢您的帮助。