Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- get-winevent | where {$_.timecreated -ge (get-date) - (new-timespan -hour 1)}
- <QueryList>
- <Query Id="0" Path="System">
- <Select Path="System">*[System[Provider[@Name='Service Control Manager'] and (Level=4 or Level=0) and (band(Keywords,36028797018963968)) and (EventID=7036)]]
- and
- *[EventData[
- Data[@Name="param1"]="Portable Device Enumerator Service" and
- Data[@Name="param2"]="running"
- ]
- ]
- </Select>
- </Query>
- </QueryList>
- #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 'Z:' -and $driveLabel -eq 'Mirror')
- {
- write-host (get-date -format s) " Starting task in 3 seconds..."
- start-sleep -seconds 3
- start-process "Z:sync.bat"
- }
- }
- Remove-Event -SourceIdentifier volumeChange
- } while (1-eq1) #Loop until next event
- Unregister-Event -SourceIdentifier volumeChange
- if ($driveLetter -eq 'Z:' -and $driveLabel -eq 'Mirror')
- start-process "Z:sync.bat"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement