转换为EXE后,在某些条件下重新执行powershell脚本
我有一个脚本,我转换为EXE,所以我可以运行它作为一个服务。我试图让脚本在某种条件下再次执行。我在脚本中有一个for循环,我想中断并重新执行,因此它类似于:转换为EXE后,在某些条件下重新执行powershell脚本,powershell,Powershell,我有一个脚本,我转换为EXE,所以我可以运行它作为一个服务。我试图让脚本在某种条件下再次执行。我在脚本中有一个for循环,我想中断并重新执行,因此它类似于: foreach{ 如果(获取日期-格式为“yyyyMMdd”!=当前日期){ **重新执行脚本** } 发送电子邮件(美元) } 将代码包装到函数中,如果调用此函数,则在中调用此函数。有几种方法可以做到这一点 您可以创建一个函数,并直接调用它: function myFunction($myCollection) foreach{ i
foreach{
如果(获取日期-格式为“yyyyMMdd”!=当前日期){
**重新执行脚本**
}
发送电子邮件(美元)
}
将代码包装到函数中,如果调用此函数,则在中调用此函数。有几种方法可以做到这一点
您可以创建一个函数,并直接调用它:
function myFunction($myCollection)
foreach{
if(Get-Date -format "yyyyMMdd" != $CURRENTDATE){
myFunction $myCollection)
}
send_email($_)
}
使用函数的更多信息(与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
如果你想把它作为一个服务来运行,你需要一些方法来限制脚本检查日期的频率,否则它会占用大量的CPU
有几种方法可以做到这一点。您可以在此处选择其他答案,并在for/while循环中添加具有适当时间的Start-Sleep cmdlet
但是我想你可能有理由重新运行你的EXE。其他答案不会重新运行EXE,他们只会保持EXE运行,直到日期到来
如果确实要重新运行EXE,只需输入EXE的命令行,其中包含**重新执行脚本**。您不需要for循环,但您确实需要调用Start Sleep来实现一些合理的功能