PowerShell命令或代码,用于了解脚本执行是否已停止

时间:2015-10-19 10:22:40

标签: powershell

我有一个PowerShell脚本。它包含将文件从文件系统迁移到某些云共享的逻辑。在脚本执行结束时,即迁移结束,我将日志导出到csv文件,该文件包含文件迁移是否有错误。

现在可能存在迁移工程师使用ctrl+BreakShift+F5手动停止脚本或脚本因某些严重错误而终止的情况。

由于我的PowerShell代码在成功执行结束时生成csv文件,因此介于两者之间的中断不会创建任何日志文件。

所以我正在搜索PowerShell命令或片段,告诉我们代码执行已停止。然后我们导出日志文件

2 个答案:

答案 0 :(得分:1)

不确定你真正的问题是什么。也许你可以在这里发布代码。你可以添加

$ErrorActionPreference = 'Stop'

在脚本开头,将在遇到错误时停止脚本。

尝试使用Try / Catch语句进行正确的错误处理。

http://blogs.technet.com/b/heyscriptingguy/archive/2010/03/11/hey-scripting-guy-march-11-2010.aspx

答案 1 :(得分:1)

使用Try / Catch / Finally。

将任何代码通知您在Finally块中退出的脚本。

试试这个:

Try { while  (1) {$i++} }
Catch{ Write-Host 'Catch block ran' }
Finally{Write-host 'Finally block ran'}

请注意,如果使用Ctrl + C中止脚本,则Catch块不会运行,但Finally块会运行。

仅在出现错误时才会运行Catch块。即使您使用Ctrl + C中止脚本,Finally块也会一直运行。

所以:

Try {#your script here}
Catch {}
Finally {#Export log file}

如果在Try块期间中止脚本,则将导出日志文件。

如果他们在导出时按Ctrl + C,您可能仍会丢失一些日志数据。

确保获取所有日志数据的最佳方法是在日志事件发生时将其写入磁盘。