У меня есть приложение, которое может вызывать / выполнять Powershell и отправлять команды при этом.
К сожалению, часть тех команд, которые мне нужны для отправки, содержит многострочный текст с кавычками.
Из-за этого моему решению необходимо сохранить эти данные в переменной / файле, на которые можно ссылаться через powershell, когда приложение отправляет аргументы команды.
Я могу сохранить это как Copy.PS1
$command = 'Set-Clipboard -Value @"
Final text
Text also here
"@'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
Затем я пытаюсь вызвать Powershell при отправке аргументов:
powershell -ExecutionPolicy bypass -EncodedCommand $encodedCommand -File "Copy.PS1"
Этот процесс не работает. Также нет ошибок, которые отображаются. Он просто не обновляет буфер обмена.
Однако, когда я открываю Powershell ISE и запускаю его без ссылки на файл, все работает:
$command = 'Set-Clipboard -Value @"
Final text
Text also here
"@'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
powershell -ExecutionPolicy bypass -EncodedCommand $encodedCommand
Может кто-нибудь объяснить, почему это поведение так отличается?