【问题标题】:Windows Task Scheduler Powershell Script complete and restartWindows 任务计划程序 Powershell 脚本完成并重新启动
【发布时间】:2019-07-03 03:44:39
【问题描述】:

我创建了一个使用 FileSystemWatcher 并创建作业的脚本。当一个文件被添加到一个文件夹中时

  1. 重命名新添加的文件
  2. 将文件移动到新目标
  3. 开始下游工作流程

一旦完成,它就会结束工作。

我想要做的是使用 Windows 任务计划程序来检查作业何时完成以立即再次运行。这样,如果一个人丢弃了一个文件夹,那么另一个人也可以这样做。

如果还有其他方法可以完成这项工作,我很乐意使用它。

我已尝试安排任务运行,但最小增量为 1 分钟

我希望文件系统观察器一直在运行。一旦脚本完成,我希望它重新开始。

【问题讨论】:

  • 你能发布一些代码来看看你到底想要什么以及你的问题是什么?

标签: powershell loops scheduled-tasks filesystemwatcher taskscheduler


【解决方案1】:

当事件(文件创建)发生时您不必开始工作,您可以直接移动文件并使用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

查看此处了解有关tracking changes to a folder using PowerShell的更多信息

【讨论】:

    猜你喜欢
    • 2017-07-06
    • 2020-05-02
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-22
    相关资源
    最近更新 更多