Я пытаюсь создать сценарий PowerShell с помощью другого сценария PowerShell. У меня есть что-то вроде: >
$scriptBlock = {
write-host "this is the body of the script that I want to add to another PS script"
if($true){
write-host "so that I can execute this automatically created script somewhere "
}
}
$scriptBlock | Out-String -Width 4096 | Out-File "c:\test.ps1"
AtRunUnattended.exe "$($Dict.Get_Item("MASTER_DIRECTORY_PATH"))\MEDIA_FILE\" /S /noreboot /L logfile="%TEMP%\AT $($Dict.Get_Item("PRODUCT_NAME")) V8.4. log" altsource="C:\temp\baf\mediafile"
Однако, когда у меня есть несколько длинных однострочных скриптов, таких как показанный выше, он автоматически упаковывается, поэтому выходной файл .ps1 не будет работать, как если бы я вызывал скрипт непосредственно из родительского скрипта. Таким образом, в файле .ps1, созданном родительским скриптом .ps1, код выглядит следующим образом:
ElseIf($str.StartsWith("DRIVER_DATE=")){$str = "DRIVER_DATE=$(Get-Date
-f MM-dd-yyyy))"}
который не будет работать должным образом, если он будет запущен.
Итак, кто-нибудь знает, как форматировать текстовые блоки сценариев, чтобы их можно было правильно записать в другой дочерний файл сценария для дальнейшего выполнения? Я провел небольшое исследование и думаю, что это может иметь какое-то отношение к ширине внутреннего текстового буфера PS или что-то в этом роде. Я также пробовал другие методы вывода файлов, такие как [System.IO.StreamWriter], однако все они выглядят одинаково — обернуты и ограничены определенной шириной строки.
Пожалуйста, помогите мне, спасибо!
Вся цель этой штуки состоит в том, чтобы автоматически генерировать некоторые скрипты и удаленно выполнять эти созданные скрипты на других машинах.