Я хочу знать, есть ли возможность вызвать службу при изменении папки или файла.
Я нашел sc triggerinfo, но я не знаю, смогу ли я использовать его для этого.
Да, это возможно несколькими способами, например, с помощью Power Shell Script:
Существует несколько стратегий, которые вы можете использовать для мониторинга файловой системы в PowerShell:
Создать новую Систему.IO.FileSystemWatcher, и установите соответствующие настройки:
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = $searchPath
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true
,Путь - это путь, который будет отслеживаться.IncludeSubdirectories указывает FileSystemWatcher контролировать все подкаталоги.Дорожка
Теперь нам нужно определить некоторые события, которые будут срабатывать, когда $ watcher обнаружит изменение файловой системы. Я собираюсь определить событие для Changed, Created, Deleted и Renamed:
$changed = Register-ObjectEvent $watcher "Changed" -Action { write-host "Changed: $($eventArgs.FullPath)" } $created = Register-ObjectEvent $watcher "Created" -Action { write-host "Created: $($eventArgs.FullPath)" } $deleted = Register-ObjectEvent $watcher "Deleted" -Action { write-host "Deleted: $($eventArgs.FullPath)" } $renamed = Register-ObjectEvent $watcher "Renamed" -Action { write-host "Renamed: $($eventArgs.FullPath)" }
Внутри каждого события вы можете определить код того, что вы хотите, чтобы произошло, когда событие происходит. В этом примере я просто выводю тип действия и полный путь измененного объекта в файловой системе.
Вот и все. Эти события будут зависать, пока вы не закроете текущий сеанс PowerShell или не отмените регистрацию вручную. Вы можете отменить регистрацию событий с помощью команды Unregister-Event:
Unregister-Event $changed.Id
Unregister-Event $created.Id
Unregister-Event $deleted.Id
Unregister-Event $renamed.Id