Я выполняю сценарий powershell во время последовательности задач развертывания ОС, используя SCCM. Из-за особенностей этой экосистемы мне приходится вызывать скрипт с синтаксисом, подобным этому (в меру моих экспериментов):
powershell.exe -executionpolicy bypass -file "w:\scripts\script.ps1" -param1 "%param1%" -param2 "%param2%"
Это работает нормально, но я хотел зафиксировать вывод этого и любых сообщений об ошибках, которые он выдает. Обычно я бы сделал что-то вроде:
powershell.exe -executionpolicy bypass -file "w:\scripts\script.ps1" -param1 "%param1%" -param2 "%param2%" > "%logfile" 2>&1
Однако, согласно документации, параметр -file должен быть последним параметром, а приведенное выше вызывает ошибку, так как он пытается интерпретировать «>» как параметр.
Очевидно, я не могу использовать:
powershell.exe -executionpolicy bypass -file "w:\scripts\script.ps1" -param1 "%param1%" -param2 "%param2%" | out-file "%logfile"
потому что это механизм командной строки, поэтому даже если канал не интерпретируется как параметр, out-файл будет интерпретироваться как исполняемый файл, а не как командлет. И даже если это сработало, out-file не перехватывает поток ошибок.
Является ли мой единственный вариант вывода внутренней регистрации скрипта в файл / стенограмму внутри скрипта? Я чувствую, что должен быть способ сделать все это из исполняемого вызова. Поведение синтаксического анализа параметра -file имеет смысл, но является неприятно ограничивающим.
Спасибо,
== Мэтт