-
-
Save 9to5IT/9620683 to your computer and use it in GitHub Desktop.
#requires -version 2 | |
<# | |
.SYNOPSIS | |
<Overview of script> | |
.DESCRIPTION | |
<Brief description of script> | |
.PARAMETER <Parameter_Name> | |
<Brief description of parameter input required. Repeat this attribute if required> | |
.INPUTS | |
<Inputs if any, otherwise state None> | |
.OUTPUTS | |
<Outputs if any, otherwise state None - example: Log file stored in C:\Windows\Temp\<name>.log> | |
.NOTES | |
Version: 1.0 | |
Author: <Name> | |
Creation Date: <Date> | |
Purpose/Change: Initial script development | |
.EXAMPLE | |
<Example goes here. Repeat this attribute for more than one example> | |
#> | |
#---------------------------------------------------------[Initialisations]-------------------------------------------------------- | |
#Set Error Action to Silently Continue | |
$ErrorActionPreference = "SilentlyContinue" | |
#Dot Source required Function Libraries | |
. "C:\Scripts\Functions\Logging_Functions.ps1" | |
#----------------------------------------------------------[Declarations]---------------------------------------------------------- | |
#Script Version | |
$sScriptVersion = "1.0" | |
#Log File Info | |
$sLogPath = "C:\Windows\Temp" | |
$sLogName = "<script_name>.log" | |
$sLogFile = Join-Path -Path $sLogPath -ChildPath $sLogName | |
#-----------------------------------------------------------[Functions]------------------------------------------------------------ | |
<# | |
Function <FunctionName>{ | |
Param() | |
Begin{ | |
Log-Write -LogPath $sLogFile -LineValue "<description of what is going on>..." | |
} | |
Process{ | |
Try{ | |
<code goes here> | |
} | |
Catch{ | |
Log-Error -LogPath $sLogFile -ErrorDesc $_.Exception -ExitGracefully $True | |
Break | |
} | |
} | |
End{ | |
If($?){ | |
Log-Write -LogPath $sLogFile -LineValue "Completed Successfully." | |
Log-Write -LogPath $sLogFile -LineValue " " | |
} | |
} | |
} | |
#> | |
#-----------------------------------------------------------[Execution]------------------------------------------------------------ | |
#Log-Start -LogPath $sLogPath -LogName $sLogName -ScriptVersion $sScriptVersion | |
#Script Execution goes here | |
#Log-Finish -LogPath $sLogFile |
@99to5IT, my Get-Help
won't work unless I put a newline between #requires -version 2
and <#
. This seems to be consistent with PowerShell on Windows 10 as well as MacOS.
This is a beautiful way of building out a script! TY!
Jsnover would be proud.
@99to5IT, my
Get-Help
won't work unless I put a newline between#requires -version 2
and<#
. This seems to be consistent with PowerShell on Windows 10 as well as MacOS.
I can confirm, you are correct.
Is this up to date for version 5? Or are there certain things that can be removed? Or replaced with a new v5 cmdlet or format?
I only want a snippet that do
- when i enter "run"
- hit tab key, It simply autocomplete the expression to "g++ -g **.cpp -o main.exe && .\main.exe"
What's the references to Log-Start, Log-Write, Log-Finish, Log-Error? There are no such cmdlets in Powershell. There are Start-Transcript and Stop-Transcript though.
Log-Start, Log-Write, Log-Finish and Log-Error are in reference to the PSLogging module which you can download from Powershell Gallery >>> https://www.powershellgallery.com/packages/PSLogging/2.5.2.
There is also more info here >>> https://9to5it.com/powershell-logging-v2-easily-create-log-files/
Why not getting the scriptname automatically?
$scriptName = $MyInvocation.MyCommand.Name
$sLogName = "$scriptName.log"
Creating a small custom function would allow you to prepend a time stamp to the log entry.
Which results in this:
You'll also find PowerShell custom log functions that create SCCM cmtrace-style logs.