You could create the transcript file first, add all the contextual information to it, then invoke Start-Transcript -Append and specify the file that you initialized for the transcript. You could use a function like this (tweak according to your requirements):
function New-Transcript {
param(
[parameter(Mandatory=$true)] [string]$Path
)
Get-Date -Format 'your preferred format' > $Path
Write-Output 'Contextual message #1' > -Append $Path
Write-Output "Contextual message #2 with $variable" > -Append $Path
Start-Transcript $Path -Append
}
Then you'd start your transcripts like this:
New-Transcript <TranscriptFilePath>
Or if you prefer, you could have it assign some default name to the transcript, e.g.
param(
[string]$Path = "PowerShell_transcript_$(Get-Date -format 'yyyy-MM-dd_HH-mm-ss')"
)
Make sure you use the -Append switch with each > (shorthand for Out-File) after the first, or it will overwrite the file each time.
This is just a framework. You'll probably want to develop your New-Transcript function further, for example have it check if the specified path already exists, give it its own -Append switch to determine whether an existing transcript file will be added to or overwritten, add parameters that control what contextual messages are prepended, etc.
Note that the default PowerShell transcript headers will follow your custom headers. I don't believe there's a way to suppress them.