仅允许1次调用powershell脚本运行

时间:2014-10-28 19:40:46

标签: powershell

我有一个powershell脚本,可以启动2个不同的Access数据库应用程序。这在志愿者设置中,当计算机首次打开时,启动完成可能需要一两分钟。有时用户会不耐烦并多次点击Powershell脚本的快捷方式,导致Access数据库多次启动。

为了解决这个问题,我认为脚本的第一件事就是创建一个文件。如果由于文件已存在而导致创建失败,则会询问用户是否要继续。如果是,则运行脚本的其余部分,否则退出。问题是"赶上"在"尝试"没有抓到任何东西。我如何解决这个问题和/或人们有什么其他解决方案?

try {New-Item ($dbDir + "lock_file") -type file | Out-Null} # create lock_file.  If it exists, another copy of this is probably running and the catch will run
catch
  {
  $answer = [System.Windows.Forms.MessageBox]::Show("It appears that the database is already starting.  Start again?" , "Start Again" , 4)
  if ($answer -eq "NO")
      {Exit}
  }

1 个答案:

答案 0 :(得分:1)

Catch仅适用于终止错误。 catch不会捕获抛出错误但继续处理的Cmdlet(也称为非终止错误)。更改此行为的一种方法是设置cmdlet的-erroraction,这对于大多数cmdlet应该是通用的。在你的情况下,我会这样做:

try {New-Item ($dbDir + "lock_file") -type file -ErrorAction Stop | Out-Null}

catch块现在应该触发。