Планировщик заданий Windows Сценарий Powershell завершен и перезапущен - PullRequest
0 голосов
/ 03 июля 2019

Я создал скрипт, который использует FileSystemWatcher и создает задание.Когда файл добавляется в папку, он

  1. Переименовывает вновь добавленный файл
  2. Перемещает файл в новое место назначения
  3. Запускает последующий рабочий процесс

Как только это сделано, работа заканчивается.

То, что я хочу сделать, - это использовать планировщик заданий Windows, чтобы проверить, что, когда задание завершается, немедленно запустить снова.Таким образом, если один человек уронит папку, этот другой человек сможет сделать то же самое.

ТАКЖЕ Если есть другой способ получить эту работу, я буду рад ее использовать.

Я пыталсячтобы запланировать выполнение задачи, но самое низкое приращение составляет 1 минуту

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

1 Ответ

0 голосов
/ 03 июля 2019

Вам не нужно начинать задание, когда происходит событие (создание файла), вы можете напрямую переместить файл и делать все, что захотите, используя параметр action.

Кроме того, у вас нетчтобы перезапустить событие, оно будет продолжать работать, если вы не отмените его регистрацию вручную, поэтому вам вообще не придется использовать планировщик задач.

Вот код

# set the folder you want to watch 
$watcher = New-Object System.IO.FileSystemWatcher
$watcher.Path = "$home/Desktop/Folder"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
$watcher.EnableRaisingEvents = $true  

# start job when event is detected
$action = {
    Start-Job -ScriptBlock {
        # Step 1&2 (You can move the file and rename it with one step)
        Move-Item $Event.SourceEventArgs.FullPath -Destination $newPath
    } | Wait-Job
}

# Register and start the FileSystemWatcher 
Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier FileCreated -Action $action

Примечание Я использовал Start-Job в коде;Однако вы можете опустить его и поместить код точно в $action.

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

Чтобы остановить наблюдателя

Unregister-Event -SourceIdentifier FileCreated

Здесь вы найдете дополнительную информацию о отслеживании изменений в папке с помощью PowerShell

...