【发布时间】:2020-05-19 05:12:13
【问题描述】:
我还有一个问题,我自己用搜索也解决不了..
我有一个脚本将 Robocopy 作为作业启动,另一个作业会监视该脚本是否正在运行,如果没有,请发送电子邮件。 现在我想添加监视脚本部分以再次启动整个脚本。 (循环)
& "$PSScriptRoot\Sync_Start&Watch.ps1"
Robocopy-Job:
Script_Block_Sync = {
param ($rc_logfile, $rc_source, $rc_destination)
robocopy $rc_source $rc_destination /MIR /SEC /SECFIX /COPYALL /m /r:5 /Mon:1 /Mot:1 /unilog:$rc_logfile
}
Start-Job -Name Robocopy_Sync -ScriptBlock $Script_Block_Sync -ArgumentList $rc_logfile, $rc_source, $rc_destination
Watch_Job:
$Script_Block_Check = {
param($MailParams, $mailbody_error, $PSScriptRoot)
while ((Get-Process Robocopy).Responding) {Start-Sleep -Seconds 30}
if (!(Get-Process Robocopy).Responding) {
Send-MailMessage @MailParams -body $mailbody_error
& "$PSScriptRoot\Sync_Start&Watch.ps1"
}
}
Start-Job -Name Robocopy_Check -ScriptBlock $Script_Block_Check -ArgumentList $MailParams, $mailbody_error, $PSScriptRoot
我已尝试使用 $PSScriptRoot、完整路径和单独的 $script 变量。如果我只运行行 (F8) 或整个 IF 块 (F8),则脚本开始运行。 如果无法启动另一个脚本,也许是另一个启动脚本的作业?
知道我错过了什么,还是仍然不可能?
感谢您的帮助!
最好的问候
【问题讨论】: