【发布时间】:2013-04-12 11:01:56
【问题描述】:
我正在 PowerShell v1 中编写一个批处理脚本,该脚本将被安排运行,假设每分钟运行一次。不可避免地,工作需要超过 1 分钟才能完成,现在我们有两个脚本实例正在运行,然后可能有 3 个,等等......
我想通过让脚本本身检查是否有自己的实例已经在运行来避免这种情况,如果是,则脚本退出。
我在 Linux 上用其他语言完成过此操作,但从未在 Windows 上使用 PowerShell 完成过此操作。
例如在 PHP 中,我可以执行以下操作:
exec("ps auxwww|grep mybatchscript.php|grep -v grep", $output);
if($output){exit;}
PowerShell v1 中有类似的东西吗?我还没有遇到过这样的事情。
在这些常见模式中,哪一种模式最适合频繁运行 PowerShell 脚本?
- 锁定文件
- 操作系统任务计划程序
- 带有睡眠间隔的无限循环
【问题讨论】:
-
你是如何安排的?如果您使用的是任务计划程序,则在设置下有一个选项:“如果任务已在运行,则适用以下规则:不要启动新实例”。
-
嗯,这很简单。我可以使用任务计划程序或创建一个锁定文件,如果操作系统可以处理它,这似乎完全没有必要
标签: windows powershell