1

Я хочу знать, есть ли возможность вызвать службу при изменении папки или файла.

Я нашел sc triggerinfo, но я не знаю, смогу ли я использовать его для этого.

1 ответ1

1

Да, это возможно несколькими способами, например, с помощью 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
    

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .