Я предлагаю использовать параметр -EncodedCommand
powershell.
Из справочной документации (powershell -?
):
# To use the -EncodedCommand parameter:
$command = 'dir "c:\program files" '
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell.exe -encodedCommand $encodedCommand
Чтобы сгенерировать base64 для параметра (сокращенно):
[System.Convert]::ToBase64String(
[System.Text.Encoding]::Unicode.GetBytes(@'
line1
line2
line3
line4
'@)
)
В действии:
powershell -NoExit -NoLogo -NoProfile -ExecutionPolicy Bypass -EncodedCommand "bABpAG4AZQAxAA0ACgBsAGkAbgBlADIADQAKAGwAaQBuAGUAMwANAAoAbABpAG4AZQA0AA=="
Примечание: это не удастся с 'line1' is not recognized
, так как я взял ваш пример буквально.