Practical PowerShell Logs
All scheduled PowerShell files should generate LOGs. “Start-Transcript” is a great cmdlet for this. Adding a few more features can boost operations support. LOGs answer essentials support questions like:
- Which parent PS1 generated this LOG?
- Did script perform needed functions?
- Any errors?
- How long did it take?
- Which user and computer ran the script?
Below is code template I recommend to for scheduled PowerShell jobs to generate a LOG. Key features include:
- Auto detect current folder and script PS1
- Create \LOG\ subfolder
- Prefix to match parent PS1
- Suffix with unique date time stamp
- Elapsed run duration (Days, Hours, Minutes)
Thank you to @ToddKlindt for improvements to formula and elapsed time. Cheers. ![]()
Video
Code
function Main() {
### YOUR CODE HERE
}
# Open Log
$prefix = $MyInvocation.MyCommand.Name
$host.UI.RawUI.WindowTitle = $prefix
$stamp = Get-Date -UFormat "%Y-%m-%d-%H-%M-%S"
Start-Transcript "$PSScriptRoot\log\$prefix-$stamp.log"
$start = Get-Date
Main
# Close Log
$end = Get-Date
$totaltime = $end - $start
Write-Host "`nTime Elapsed: $($totaltime.tostring("hh\:mm\:ss"))"
Stop-TranscriptDownload
https://github.com/spjeff/spadmin/blob/master/Practical-PowerShell-LOGs.ps1
