Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

powershell - how to check if transcript is running?

I get this message everytime my script doesn't end properly and stop-transcript is not executed:

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

Is it possible to check if transcript is running and stop it with if-then at start of the script? Or how to reliably stop it at the end? Thank you

like image 593
culter Avatar asked Apr 16 '12 07:04

culter


2 Answers

What about an empty try-catch block at the beginning of your powershell script to stop transcribing?

try{
  stop-transcript|out-null
}
catch [System.InvalidOperationException]{}
like image 123
Ocaso Protal Avatar answered Sep 21 '22 08:09

Ocaso Protal


Wouldn't something like this work?

try
{
    Start-Transcript
    # Do my stuff
}

finally
{
    Stop-Transcript
}

From the documentation: The Finally block statements run regardless of whether the Try block encounters a terminating error. Windows PowerShell runs the Finally block before the script terminates or before the current block goes out of scope. A Finally block runs even if you use CTRL+C to stop the script. A Finally block also runs if an Exit keyword stops the script from within a Catch block.

like image 36
David Brabant Avatar answered Sep 21 '22 08:09

David Brabant