Как передать имя файла CIM_DataFile во встроенный VBScript ActiveScriptEventConsumer для подписки WMI __InstanceCreationEvent? - PullRequest
0 голосов
/ 17 января 2019

Мне нужно автоматизировать перемещение файла, когда он создается из одного каталога, и только из файла, который вызвал событие ... не из всех файлов в каталоге.

Я пытаюсь настроить подписку WMI с использованием powershell и ActiveScriptEventConsumer со встроенным VBScript, где я могу передать имя файла во встроенный VBScript.

    PS> $evtConsumer.ScriptText = "WITH CreateObject(""Scripting.FileSystemObject"") 
    >> .MoveFile """ $EventArgs.NewEvent.Name """, ""[target path here]""
    >> END WITH"

Когда я запрашиваю текст $ evtConsumer.ScriptText, в консоли возвращается ниже

    PS> $evtConsumer.ScriptText
    WITH CreateObject("Scripting.FileSystemObject")
    .MoveFile "", "[target path]"
    END WITH

Не удивительно, что ничего не происходит, когда я создаю файл в целевом каталоге.

1 Ответ

0 голосов
/ 17 января 2019

Это устанавливает подписку WMI с использованием VBScript.

Set FSO = CreateObject("Scripting.FileSystemObject")
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")
Set MonitoredEvents = WMI.ExecNotificationQuery("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE Targetinstance ISA 'CIM_DirectoryContainsFile' and TargetInstance.GroupComponent= 'Win32_Directory.Name=""C:\\\\Scripts""'")
Do
    WMIPath = Split(MonitoredEvents.NextEvent.TargetInstance.PartComponent, "=")(1)
    FilePath = Replace(WMIPath, "\\", "\")
'   FSO.CopyFile  filepath, "C:\", vbtrue 
    wscript.echo filepath
Loop

Если вы хотите, чтобы ваша программа работала как сервис. В Windows вы используете Task Scheduler, который выбираете вы или другой пользователь. Обратите внимание, что если вы настроите его для запуска, когда вы не вошли в систему, он будет невидим для вас, когда вы вошли в систему. Windows имеет встроенные учетные записи безопасности для программ / служб, подобных этой.

О планировщике задач https://docs.microsoft.com/en-us/windows/desktop/taskschd/task-scheduler-start-page

Об учетных записях служб https://docs.microsoft.com/en-us/windows/desktop/services/service-user-accounts

...