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.