|
server
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Monitor Folder Recursively using WMIThis is a script that I copied from Microsoft Scripting Guy to start with. It works well except that it only monitors file activities on the root of the folder. I would like it to recursively monitor sub-folders as well. Any suggestions? strComputer = "." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE " _ & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ & "TargetInstance.GroupComponent= " _ & "'Win32_Directory.Name=""c:\\\\My_Folder""'") Do While TRUE Set objEventObject = colMonitoredEvents.NextEvent() Select Case objEventObject.Path_.Class Case "__InstanceCreationEvent" Wscript.Echo "A new file was just created: " & _ objEventObject.TargetInstance.PartComponent Case "__InstanceDeletionEvent" Wscript.Echo "A file was just deleted: " & _ objEventObject.TargetInstance.PartComponent End Select Loop
Show quote
Hide quote
"Joe Pang" <pan***@hotmail.com> wrote in message AFAIK you have to monitor each folder separately. Furthermore the process is news:eiyVOl1SJHA.6000@TK2MSFTNGP02.phx.gbl... >I am writing a VBscript to monitor a folder for file creation and deletion. >This is a script that I copied from Microsoft Scripting Guy to start with. >It works well except that it only monitors file activities on the root of >the folder. I would like it to recursively monitor sub-folders as well. > > Any suggestions? > > > > > > strComputer = "." > Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2") > > Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ > ("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE " _ > & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ > & "TargetInstance.GroupComponent= " _ > & "'Win32_Directory.Name=""c:\\\\My_Folder""'") > > Do While TRUE > Set objEventObject = colMonitoredEvents.NextEvent() > > Select Case objEventObject.Path_.Class > Case "__InstanceCreationEvent" > Wscript.Echo "A new file was just created: " & _ > objEventObject.TargetInstance.PartComponent > Case "__InstanceDeletionEvent" > Wscript.Echo "A file was just deleted: " & _ > objEventObject.TargetInstance.PartComponent > End Select > Loop quite CPU-intensive, like many WMI processes. Have a look at your CPU loading in the Task Manager. You'll probably see a substantial spike once every 10 seconds. I came across a few commerical software/shareware that can do the job -
monitor a folder and its sub-folders recursively and executive a program on changes. I was tempted to buy one but none of them really works well. That was why I was tempted to create my own script. Since they can do it, I thought I could do it using WMI. I know it will cause some spike on CPU but so far I don't see any significant impact. Show quoteHide quote "Pegasus (MVP)" <I.***@fly.com.oz> wrote in message news:uir4Q11SJHA.408@TK2MSFTNGP02.phx.gbl... > > "Joe Pang" <pan***@hotmail.com> wrote in message > news:eiyVOl1SJHA.6000@TK2MSFTNGP02.phx.gbl... >>I am writing a VBscript to monitor a folder for file creation and >>deletion. This is a script that I copied from Microsoft Scripting Guy to >>start with. It works well except that it only monitors file activities on >>the root of the folder. I would like it to recursively monitor >>sub-folders as well. >> >> Any suggestions? >> >> >> >> >> >> strComputer = "." >> Set objWMIService = GetObject("winmgmts:\\" & strComputer & >> "\root\cimv2") >> >> Set colMonitoredEvents = objWMIService.ExecNotificationQuery _ >> ("SELECT * FROM __InstanceOperationEvent WITHIN 10 WHERE " _ >> & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _ >> & "TargetInstance.GroupComponent= " _ >> & "'Win32_Directory.Name=""c:\\\\My_Folder""'") >> >> Do While TRUE >> Set objEventObject = colMonitoredEvents.NextEvent() >> >> Select Case objEventObject.Path_.Class >> Case "__InstanceCreationEvent" >> Wscript.Echo "A new file was just created: " & _ >> objEventObject.TargetInstance.PartComponent >> Case "__InstanceDeletionEvent" >> Wscript.Echo "A file was just deleted: " & _ >> objEventObject.TargetInstance.PartComponent >> End Select >> Loop > > AFAIK you have to monitor each folder separately. Furthermore the process > is quite CPU-intensive, like many WMI processes. Have a look at your CPU > loading in the Task Manager. You'll probably see a substantial spike once > every 10 seconds. >
What is error '80041003', please?
querying wmi - recommended structure when iteration seems unnecessary? accesschk script to include datestamp managing NTFS permissions - cacls or wmi? Simple Ping Script How can I do a WMI Bulk data retrieval ? chech group How to create a unique samaccountname in AD Script to add username,computername and IP address on every printed pages User on the system Start up |
|||||||||||||||||||||||