Event triggered task


  1. Posts : 20
    Microsoft Windows 7 (x64)
       #1

    Event triggered task


    I'm trying to evoke a certain script once an event occurs, using the Scheduled Tasks in W7 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 win7 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 Computer


  2. Posts : 20
    Microsoft Windows 7 (x64)
    Thread Starter
       #2

    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 Computer


 

  Related Discussions
Our Sites
Site Links
About 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 09:49.
Find Us