Вместо создания строки для запуска подобной команды, вы можете рассмотреть возможность использования subprocess.run()
со списком аргументов (как предложил Чепнер в комментариях).
Возможно, вот так (обратите внимание, я добавил r, чтобы сделать его необработанной строкой; вы хотите сделать это при вводе обратной косой черты, чтобы они не интерпретировались как escape-символы):
from subprocess import run
cmds_start = r'powershell.exe Start-Job -ScriptBlock {D:\abc\abc\abc\abc.ps1 abc}'.split()
names = 'test1 test2'.split()
cmds = cmds_start[:-1] + names + cmds_start[-1:]
run(cmds) # use commands list to run, not string
# but can still view the script like:
print(" ".join(cmds)) # or:
print(*cmds, sep=" ")