我有一个脚本,我转换为EXE,所以我可以将其作为服务运行。我试图让脚本在某些条件下再次执行。我在脚本中有一个for循环,我想打破并重新执行,所以它类似于:
foreach{
if(Get-Date -format "yyyyMMdd" != $CURRENTDATE){
**re-execute script**
}
send_email($_)
}
答案 0 :(得分:0)
将代码包装到函数中并在if
中调用此函数。
答案 1 :(得分:0)
有几种方法可以做到这一点。
您可以创建一个函数,并直接调用它:
function myFunction($myCollection)
foreach{
if(Get-Date -format "yyyyMMdd" != $CURRENTDATE){
myFunction $myCollection)
}
send_email($_)
}
有关使用函数can be found here的更多信息(与C语法相比,它们很奇怪)
可能是最佳路线。
另一条路线是while循环:
while(Get-Date -format "yyyyMMdd" != $CURRENTDATE)
{
foreach{
#Iterate foreach here, then exits to loop, where it checks condition again
#If still does not match todays date, it goes through foreach loop again.
}
} #loop
send_email($_) #Script will not get here until it meets your date check condition
答案 2 :(得分:0)
如果你想将它作为服务运行,你需要一些方法来限制脚本检查日期的频率,否则它将使用大量的CPU!
有几种方法可以做到这一点。您可以在此处获取其他答案,并在for / while循环中添加具有适当时间的Start-Sleep cmdlet。
但是我想你可能有理由重新运行你的EXE。其他答案不会重新运行EXE,他们只会保持EXE运行直到日期到来。
如果您想重新运行EXE,只需输入EXE的命令行,即可重新执行脚本**。您不需要for循环,但您需要将Start-Sleep调用到合理的范围。