【问题标题】:Need to run two actions inside a scheduled task. Need one to run after the first finishes需要在计划任务中运行两个操作。需要一个在第一次完成后运行
【发布时间】:2019-05-09 19:15:31
【问题描述】:

我有 powershell 代码来创建一个使用 ghost.exe “重影”硬盘驱动器的任务。我需要创建一个任务,首先使用我的所有参数运行 ghost.exe,然后在完成后运行下一个操作,该操作将使用 powershell 脚本验证图像。

诀窍是告诉任务等到创建备份,然后运行验证。在我的尝试中,它开始备份,然后立即尝试验证。我该怎么做?

行:

 cmd /c schtasks /Create /RU 'SYSTEM' /SC once /TN hotghost /SD $startdate 
 /ST $starttime /TR $hotghosttask

/TR 是“要运行的任务”,但我无法添加另一个 /TR 来添加另一个操作。

【问题讨论】:

  • 如果您在提出一般性问题之前先尝试一下,那就太好了。
  • @montonero 我整个星期都在处理这个问题,谢谢。
  • 没有任何代码,您将不会在这里得到任何答案。
  • @montonero 已编辑。
  • 什么是$hotghosttask?一个可执行路径,或者如果正在启动克隆和验证操作,它必须是一个脚本?无论哪种方式,听起来 Ghost 都没有同步执行。顺便说一句,您不需要使用cmd /c 来调用另一个可执行文件(schtasks.exe);您可以直接拨打schtasks。您也可以考虑查看ScheduledTasks moduleNew-ScheduledTask command

标签: powershell scheduled-tasks


【解决方案1】:

如果它是您正在等待更改的现有项目,并且您大致知道“幽灵”通常需要多长时间,那么一个简单的解决方案就是在 PowerShell 脚本中构建一个随后将运行的控件, 在图像上等待新的 LastWriteTime。在以下示例中,当 $temp.LastWriteTime 匹配当前月、日、年和小时时,脚本将继续。

请看下面的例子:

$Date = Get-Date -Format "MM-dd-yyyy hh:"

do {
$temp = Get-Item C:\temp\temp.txt
}
    until($temp.LastWriteTime.ToString("MM-dd-yyyy hh:") -eq $date)
Write-Host "Starting image verification..." 
[your code begins here]

另一种选择是创建一个在第一个任务完成后生成的临时文件,然后使用 do/until 循环直到语句为真。

do {
$temp = Test-Path C:\temp\temp.txt
}
    until($temp -eq $true)

【讨论】:

  • 不幸的是,第一个建议的计算机之间的创建过程差异很大。我会尝试第二个。
  • 在任务完成后创建一个临时文件通常是这样 - 当第二个脚本完成时也是如此,删除临时文件。
  • 你知道第一个任务完成后如何生成临时文件吗?
  • 这完全取决于您如何与第一个任务进行交互,因为我不知道这一点,所以我有另一个建议,仅基于查看执行“幽灵”的计划作业。我会设置第二个任务在第一个任务完成时触发。您可以创建第二个计划任务,该任务将在第一个任务报告 EventID 102(已完成)时触发。您可以为应该运行任务的时间构建自定义事件选择,这里有一个很好的指南来描述该过程:woshub.com/schedule-task-to-start-when-another-task-finishes
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-21
  • 2012-10-09
  • 2014-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多