fix(burn-in): move psExe detection inside Start-Job scriptblock

Passing $psExe as a second -ArgumentList item caused double-wrapping of
the string array, collapsing all args into one string when splatted.
Computing $IsWindows inside the worker avoids the extra param entirely.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-23 22:41:28 +02:00
parent 5d59446114
commit 568740ed17
+5 -4
View File
@@ -216,18 +216,19 @@ for ($r = 1; $r -le $Rounds; $r++) {
# Start-Job runs a new PS session; call the platform PS executable as child # Start-Job runs a new PS session; call the platform PS executable as child
# process so exit $exitCode from Invoke-CIJob.ps1 is captured in $LASTEXITCODE. # process so exit $exitCode from Invoke-CIJob.ps1 is captured in $LASTEXITCODE.
# $IsWindows is evaluated inside the job worker (correct OS context).
# NOTE: do NOT name the parameter $Args — @Args is a PS reserved splatting # NOTE: do NOT name the parameter $Args — @Args is a PS reserved splatting
# alias for the automatic $Args variable (unbound arguments), which would # alias for the automatic $Args variable (unbound arguments), which would
# be empty here since the parameter binding consumed all positional args. # be empty here since the parameter binding consumed all positional args.
$psExe = if ($IsWindows) { 'powershell.exe' } else { 'pwsh' }
$psJob = Start-Job -ScriptBlock { $psJob = Start-Job -ScriptBlock {
param([string[]]$ChildArgs, [string]$PsExe) param([string[]]$ChildArgs)
$out = & $PsExe @ChildArgs 2>&1 $psExe = if ($IsWindows) { 'powershell.exe' } else { 'pwsh' }
$out = & $psExe @ChildArgs 2>&1
[PSCustomObject]@{ [PSCustomObject]@{
ExitCode = $LASTEXITCODE ExitCode = $LASTEXITCODE
Output = ($out -join "`n") Output = ($out -join "`n")
} }
} -ArgumentList (, $argArray), $psExe } -ArgumentList (, $argArray)
$jobEntries.Add(@{ $jobEntries.Add(@{
PSJob = $psJob PSJob = $psJob