79690937

Date: 2025-07-05 09:43:50
Score: 0.5
Natty:
Report link

You have done nothing wrong here.
The example you used as source is meant to be run directly in the console, not in a script (and it would be better if it mentioned that).
The issue is this:

I have this code at the start of a long script

When you check the actual description of the $Transcript variable, you'll find the following:

$Transcript
[...] If you don't specify a value for the Path parameter, Start-Transcript uses the path in the value of the $Transcript global variable. [...]

The $Transcript variable in your script is (by default) defined in the Script scope, not the Global scope, so Start-Transcript won't use it and fall back to the default path.

Defining $Transcript as global variable will work:

$Global:Transcript = (Join-Path -Path $Path -ChildPath $filename).ToString()

You should also then always include the scope if you're using it later in the script.

Or, as @iron usggested, just use the Path or LiteralPath parameters.

Reasons:
  • Long answer (-0.5):
  • Has code block (-0.5):
  • User mentioned (1): @iron
  • Low reputation (0.5):
Posted by: user314159