Windows 7 Forums
Welcome to Windows 7 Forums. Our forum is dedicated to helping you find support and solutions for any problems regarding your Windows 7 PC be it Dell, HP, Acer, Asus or a custom build. We also provide an extensive Windows 7 tutorial section that covers a wide range of tips and tricks.


Windows 7: Event triggered task

11 Oct 2011   #1

Microsoft Windows 7 (x64)
 
 
Event triggered task

I'm trying to evoke a certain script once an event occurs, using the Scheduled Tasks in Windows 7 x64 with event triggering. The script copies a certain file from the USB stick to the HDD.
To be precise, the script should run upon specific USB stick is plugged in.

So far i only see the DriverFrameworks-UserMode events in the event viewer where the precise ID of the USB stick can be seen (<UMDFHostDeviceRequest instance="<str>" ... >)
What I also need is to see what drive letter is assigned upon "mount" operation.
I should be able to read somewhere what drive letter is assigned and perform a copy operation such as (e.g. using a .bat script):
Code:
xcopy <drive_letter>:\file.txt C:\some_dir\
Can this be done?
I know autorun is ignored with Windows 7 so that isn't an option.
Perhaps there's a better method..? Also i'd like to use only availlable tools without installing additional automation software.
If possible i'd like to avoid having to define a fixed drive letter assignment.

Thanks in advance

My System SpecsSystem Spec
.

18 Oct 2011   #2

Microsoft Windows 7 (x64)
 
 

So far I managed to compare the GUID of the partition and detect the assigned drive letter using a powershell script that is triggered upon PnP event:

Code:
$DriveLetter = ""
$ObjFile1 = ""
$ObjFile2 = ""
$File1Path = ""
$File2Path = ""
$PartGUID = ""


##### Partition GUID

$PartGUID = "<your partition guid>"

##### Get disk driveletter

Get-WmiObject Win32_Volume | 

foreach {
    if ($_.DeviceID -like "*$PartGUID*") {
        $DriveLetter = $_.DriveLetter
        }
    
}
if ($DriveLetter -like ""){
        Write-Host "Partition with GUID not found. Terminating."
        exit
}

##### Paths

$File1Path = $DriveLetter+"\file.ext"
$File2Path = "Some_file.ext"

#####

$ObjFile1 = Get-Item $File1Path

$ChkFile2 = Test-Path $File2Path

##### Copy from disk to Dropbox folder

if ($ChkFile2 -eq $True) {

    $ObjFile2 = Get-Item $File2Path

    #Replace file on Dropbox if older then on disk
    if ($ObjFile1.LastWriteTime -gt $ObjFile2.LastWriteTime) { 
        Write-Host "Older file exists, copying newer file..."
        Copy-Item $File1Path $File2Path
        Write-Host "Done."
        exit

    }
    else {Write-Host "File already at newest change."
        exit
    }
    
}

else {
    Write-Host "File doesn't exist in the Dropbox folder, copying new file..."
    Copy-Item $File1Path $File2Path
    Write-Host "Done."
    exit
}
Problem is, the script is executed whenever a mass storage device is plugged in.
Is it possible to somehow make task scheduler filter the event contents and trigger the script only for a specific drive?
My System SpecsSystem Spec
Reply

 Event triggered task




Thread Tools



Similar help and support threads for2: Event triggered task
Thread Forum
Kernel power event 41, task 63 BSOD Help and Support
Run scheduled task or a GPO when Win7 SleepMode is triggered? General Discussion
Windows dialog event sounds not triggered Performance & Maintenance
Kernel power event 41 task 63 BSOD Help and Support
event id 41 task category 63 BSOD Help and Support
Random reboots, event:41 task:63 BSOD Help and Support
Power Kernal Event 41 task 63 BSOD Help and Support

Our Sites

Site Links

About Us

Find Us

Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

Designer Media Ltd

All times are GMT -5. The time now is 12:51 AM.
Twitter Facebook Google+



Windows 7 Forums

Seven Forums Android App Seven Forums IOS App
  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33