1

我有一个转换为 EXE 的脚本,因此我可以将其作为服务运行。我试图让脚本在某些条件下再次执行。我在脚本中有一个 for 循环,我想中断并重新执行,所以它类似于:

foreach{
   if(Get-Date -format "yyyyMMdd" != $CURRENTDATE){
          **re-execute script**
   }
   send_email($_)
}
4

3 回答 3

0

将您的代码包装到函数中并if调用此函数。

于 2013-07-01T19:38:14.113 回答
0

如果你想把它作为服务运行,你需要一些方法来限制脚本检查日期的频率,否则它会使用大量的 CPU!

有几种方法可以做到这一点。您可以在此处获取其他答案,并在 for/while 循环中添加适当时间的 Start-Sleep cmdlet。

但是我认为您可能有理由重新运行您的 EXE。其他答案不会重新运行 EXE,他们只会让 EXE 一直运行,直到日期到来。

如果您确实想重新运行您的 EXE,您只需输入具有 **re-execute script** 的 EXE 命令行。您不需要 for 循环,但您确实需要调用 Start-Sleep 到一些合理的地方。

于 2013-07-02T04:22:45.657 回答
0

有几种方法可以做到这一点。

您可以制作一个函数,然后直接调用它:

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
于 2013-07-02T01:51:14.783 回答