我在powershell脚本中使用schtasks在远程服务器上运行特定的计划任务。脚本非常简单:
$server = "myserver"
$task = "mytask"
schtasks /Run /S $server /TN $task
一切正常,直到我决定在运行任务后绘制一条线:
$server = "myserver"
$task = "mytask"
schtasks /Run /S $server /TN $task
for ($i=0 ; $i -lt 90 ; $i++) { write-host -NoNewline "-" }
write-host "-"
在这种情况下,脚本将正确运行三次,然后它将永远不再运行任务,除非我从一个新的PowerShell窗口运行它。
结果如下:
PS C:\temp> .\runtask.ps1
SUCCESS: Attempted to run the scheduled task "mytask".
-------------------------------------------------------------------------------------------
PS C:\temp> .\runtask.ps1
SUCCESS: Attempted to run the scheduled task "mytask".
-------------------------------------------------------------------------------------------
PS C:\temp> .\runtask.ps1
SUCCESS: Attempted to run the scheduled task "mytask".
-------------------------------------------------------------------------------------------
PS C:\temp> .\runtask.ps1
-------------------------------------------------------------------------------------------
PS C:\temp> .\runtask.ps1
-------------------------------------------------------------------------------------------
PS C:\temp>
一些观察:
- 脚本正常运行的次数取决于行中的破折号
- 服务器和任务是否存在无关紧要。如果它们不存在,则会显示错误“未找到网络路径”三次尝试,然后在下次尝试时显示除了该行之外的任何内容。
- 当没有显示任何内容时,schtasks实际上不会运行任务。该任务的第一件事是在应用程序事件日志中添加一个事件。发生SUCCESS时会创建事件。当schtasks什么都不显示时,不会创建任何事件
问题是:在显示短划线时,如何使脚本正常工作?