当前位置: 首页 > 知识库问答 >
问题:

Windows任务计划程序Powershell脚本完成并重新启动

章宏峻
2023-03-14

我创建了一个使用文件系统观察器并创建作业的脚本。当文件被添加到一个文件夹时,它

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

一旦完成,工作就结束了。

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

此外,如果有其他方法来完成这项工作,我很乐意使用它。

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

我希望让filesystemwatcher一直运行。一旦剧本完成,我希望它能重新开始。

共有1个答案

詹夕
2023-03-14

您不必在事件(文件创建)发生时启动作业,您可以使用< code>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

注意,我在代码中使用了< code > Start-Job ;但是,您可以省略它,并将代码准确地放在< code>$action中。

此代码将注册新的FileSystemWatcher,并将继续监视文件夹中新创建的文件,然后将其移动到新位置。

来阻止观察者

Unregister-Event -SourceIdentifier FileCreated

有关使用 PowerShell 跟踪对文件夹的更改的详细信息,请参阅此处

 类似资料:
  • 我正在使用 Windows 服务器 2016 数据中心。每当服务器重新启动时,我在任务计划程序中的计划任务总是停止运行。只有在我手动进入应用程序并重新键入我的用户帐户密码后,它才会再次开始工作。这是设置还是条件问题?

  • 我的域控制器上有一个小脚本,它被设置为通过SMTP向我发送有关最新安全事件4740的电子邮件。 手动执行时,脚本将按预期运行;但是,当设置为通过计划任务运行时,尽管它显示已执行,但没有任何反应(没有电子邮件)。 脚本如下: 计划任务设置如下: 我还尝试了以下方法: 根据任务历史记录:任务开始、行动开始、创建任务流程、行动完成、任务完成。我浏览了网站上一些有着相同“问题”的不同链接,但它们似乎都有一

  • 本文向大家介绍如何使用PowerShell启动任务计划程序的特定任务?,包括了如何使用PowerShell启动任务计划程序的特定任务?的使用技巧和注意事项,需要的朋友参考一下 要使用PowerShell启动任务计划程序的特定任务,我们需要使用Start-ScheduledTask 命令。 当我们运行上面的命令时,我们需要提供任务名称。 例如, 当您检查以上任务状态时, 示例 输出: 要在远程计算机

  • 我有一些可执行文件要安排在Windows任务调度程序中运行。他们的输出必须在某处看到。通过Windows任务计划程序运行应用程序时,程序的输出将丢失。如何捕获此输出?我做了谷歌搜索,找到了破解方法,改为运行cmd并将输出重定向到日志文件,但我无法将这些信息很好地保存在XML文件中,我应该能够在任务调度程序中注册,因此我需要一种更好的方法。 任何帮助都将不胜感激。

  • 我在我的Windows 2008 R2服务器上使用任务计划程序创建了一个任务。它会打开一个. bat文件。这个bat没有错误,工作正常。如果我开始任务(即单击运行),它会执行bat文件。从现在开始,它应该每隔x分钟重复一次(目前设置为1分钟),但它没有。我尝试了很多,几乎改变了每个属性,但它仍然不会重复执行我的bat文件。 我已经阅读了不同的问题和答案,但没有任何效果。 有人知道我做错了什么吗?

  • 我有一个批处理文件,其中包含以下代码以停止和启动SQL报告服务: 我已经设置了每天运行的计划任务,它目前以SYSTEM的形式运行,并设置了最高权限。我在操作上设置了文件夹中的开始选项,通常一切似乎都设置正确。但是当我运行任务时,似乎什么都没有发生,它说任务已经运行,但我看不到服务已经按预期重新启动。 有人能告诉我我错过了什么吗?