Я не знаю, если вы забыли - в вашем вопросе, но это -ExecutionPolicy
. Если этот сценарий не подписан, то он не будет выполнять этот сценарий также, вы можете использовать bypass
как executionpolicy, чтобы исключить это.
Я сомневаюсь, что вы можете запускать скрипты и команды одна за другой в командной строке. Добавьте exit $LASTEXITCODE
в скрипт и запустите его с -File C:\script.ps1
.
If by выполнить скрытый вы имеете в виду нет окна консоли, я обычно называю свои сценарии как
powershell.exe -noprofile -executionpolicy bypass -file C:\script.ps1
и никогда не видеть окно.
чтобы получить вывод скрипта в файл, передайте ваши команды в Tee-Object
"Hello World" | Tee-Object C:\output.file
вы можете назвать файл все, что угодно, реализовать логику в вашем скрипте, так что имя файла увеличивается, или-мой личный фаворит-использовать YYYYMMddhhmmss в имени файла.
обновление
кроме того, взято из страница Technet от Microsoft на Powershell:
блоки скриптов должны быть заключены в фигурные скобки ({}). Ты можешь укажите блок сценария только при запуске PowerShell.exe в Windows PowerShell. Результаты скрипта возвращаются в родительскую оболочку как десериализованные объекты XML, а не живые объекты.
если значение Command является строкой,команда должна быть последним параметром в команде, так как любые символы, введенные после команды, интерпретируются как команда аргументы.