我正在使用以下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资源管理器会更新其驱动器显示。谢谢您的帮助。