powershell - 如何检查成绩单是否正在运行?
我得到这个消息,每次我的脚本不正确结束和停止成绩单不执行:powershell - 如何检查成绩单是否正在运行?
Start-Transcript : Transcription has already been started. Use the stop-transcr
ipt command to stop transcription.
At C:\ps\003desifrovanie.ps1:4 char:17
+ start-transcript <<<< -path c:\_LOG\sfrbdesifrovanie.log -append
+ CategoryInfo : NotSpecified: (:) [Start-Transcript], InvalidOpe
rationException
+ FullyQualifiedErrorId : System.InvalidOperationException,Microsoft.Power
Shell.Commands.StartTranscriptCommand
是否可以检查是否成绩单运行和停止它的if-then在脚本的开始?或者如何在最后可靠地阻止它?谢谢
那么你的PowerShell脚本开始处的一个空的try-catch
块如何停止转录呢?
try{
stop-transcript|out-null
}
catch [System.InvalidOperationException]{}
尝试这里提供的试验录制功能:http://poshcode.org/1500
if(Test-Transcribing) {Stop-Transcript}
这不适用于Powershell 4(也许更早),例外必须更改。 – svandragt 2014-08-22 12:47:53
岂不像这样的工作?
try
{
Start-Transcript
# Do my stuff
}
finally
{
Stop-Transcript
}
从文档: finally块语句无论try块是否遇到终止错误运行。 Windows PowerShell在脚本终止之前或当前块超出范围之前运行Finally块。即使您使用CTRL + C停止脚本,如果Exit关键字停止Catch块内的脚本,则还会运行Finally块。
感谢您选择此cmdlet。我很确定它将在未来有所帮助。 – culter 2012-04-16 11:18:21
try {
Start-Transcript -path $myOutLog
} catch {
stop-transcript
Start-Transcript -path $myOutLog
}
你能否提供一些关于这段代码在做什么的解释? – rayryeng 2014-12-01 18:29:30
由于原始海报从未回答过,我会提供解释。如果Start-Transcript已经启动,将会抛出一个错误。上面的代码首先尝试开始转录。如果转录已经开始,它会捕获错误,停止转录,然后再次启动。这确保输出被发送到由_ $ myOutLog_指定的位置。尽管抓住特定的错误而不是所有的错误可能是更好的做法。然后'} catch {'行会变成'} catch [System.InvalidOperationException] {'。 – 2015-09-23 15:53:56
这很简单,它适用于我!谢谢 – culter 2012-04-16 08:52:20
感谢关于'Out-Null'的提示!这是'$ null'的好替代方案 – 2012-06-25 22:32:45