Невозможно запланировать задачу с помощью schtasks.exe в сценарии SetupComplete.cmd в Windows 10
У меня есть требование для автоматизации развертывания Windows 10 для моего клиента. Я использую функцию SetupComplete.cmd для подключения к Corp Wi-Fi и установки MSI. Существуют некоторые установки EXE, которые я не могу запустить без вывода сообщений, поэтому я намерен скопировать установочные файлы на локальный диск и установить запланированное задание, используя команду schtasks.exe, для запуска сценария при следующем входе в систему для завершения остальные установки.
Сценарий успешно подключается к Wi-Fi, устанавливает MSI и копирует файлы на локальный диск. Однако запланированное задание не настроено.
Если я запустил сценарий SetupComplete.cmd на компьютере после того, как пользователь вошел в систему, все функции, включая создание запланированной задачи, будут успешно завершены.
Я указал точный путь к папке для schtasks (windir/system32) и побежал оттуда. Работает, когда запускается вручную, а не из setupcomplete.cmd.
Я попытался скопировать schtasks.exe на установочный носитель и вызвать программу с него (если exe не был записан во время выполнения скрипта, в чем я сомневаюсь)
Я поставил задачу как последний шаг и включил сон на 20 секунд до его выполнения.
Я включил ведение журнала, и команда запускается, но нет подтверждения запроса. С отключенным эхом результат не дается. При включенном эхо строка печатается без результата.
Я удалил все остальные команды из своего скрипта SetupComplete и запустил их с помощью команды schtasks.exe, на случай, если она не будет хорошо работать с другими командами, и это все равно не сработало. Я видел другие форумы, использующие schtasks.exe в своих сценариях SetupCmplete как решение некоторых требований, поэтому кажется, что оно может работать при правильном использовании.
Мне известно, что сценарий на этом этапе выполняется под системной учетной записью, но я не могу найти упоминаний о том, что он не может работать с этими разрешениями.
@echo off
set LOGFILE= D:\test\batch.log
call :LOG > %LOGFILE%
exit /B
:LOG
netsh wlan add profile filename="D:\Blah.xml"
netsh wlan connect name=An interface="WiFi"
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d D:\bkgrnd\blah.bmp /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
REM ***MSI INSTALLS***
msiexec.exe /i "D:\MSI\3t.msi" /quiet /norestart /L*V "D:\MSI\logs\3TLog.log"
msiexec.exe /i "D:\MSI\Chrome.msi" /quiet /norestart /L*V "D:\MSI\logs\ChromeLog.log"
msiexec.exe /i "D:\MSI\FireFox.msi" /quiet /norestart /L*V "D:\MSI\logs\FFLog.log"
msiexec.exe /i "D:\MSI\node.msi" /quiet /norestart /L*V "D:\MSI\logs\nodeLog.log"
msiexec.exe /i "D:\MSI\Slack.msi" /quiet /norestart /L*V "D:\MSI\logs\SlackLog.log"
msiexec.exe /i "D:\MSI\fs-windows-agent-2.5.0.msi" /quiet /norestart /L*V "D:\MSI\logs\FreshService.log"
REM Copy install files and create scheduled task to complete installs of BD and CB
mkdir C:\FinalInstalls
mkdir C:\FinalInstalls\BD
mkdir C:\FinalInstalls\CB
xcopy "D:\EXE\setupdownloader_[astring].exe" C:\FinalInstalls\BD
xcopy D:\EXE\CB\Setup.exe C:\FinalInstalls\CB
xcopy D:\EXE\CB\settings.ini C:\FinalInstalls\CB
xcopy D:\finalinstalls.cmd C:\FinalInstalls
schtasks /create /tn "FinalInstalls" /tr "cmd.exe /k C:\FinalInstalls\finalinstalls.cmd" /sc ONLOGON /RL HIGHEST
Я ожидаю, что задача будет отображаться в планировщике задач, как это происходит, когда я запускаю ее вручную. Я не могу придумать другого пути, и это, похоже, сработало для других людей. Любая помощь будет очень ценится:)
Спасибо!
0 ответов
Перед запуском setupcomplete.cmd убедитесь, что UAC отключен.
Я использую стандартный ISO-образ Windows для загрузки Windows 10 на производственные машины и использую:
- autounattend.xml для настройки установки,
- setupcomplete.cmd для создания файла xml, который затем импортируется через schtasks.exe, а затем импортированный
- Запланированная задача для запуска командного файла, чтобы проверить, что у меня есть права администратора и подключение к моему серверу развертывания, прежде чем запускать мой основной
- Скрипт powershell для настройки графического интерфейса.
При обновлении развернутой ОС я изначально не настраивал autounattend.xml, а вместо этого тестировал развертывание, используя только файл setupcomplete.cmd, поскольку мне пришлось вставить файл в образ через DISM. Команды Schtasks, которые у меня были в файле setupcomplete.cmd, не запускались, но остальная часть командного файла работала нормально.
Как и другие, файл журнала, в который я экспортировал вывод команды schtasks, был создан, но не имел содержимого. Кроме того, setupcomplete.bat будет работать без сбоев, включая команду schtasks при запуске вручную.
После нескольких тестов я обнаружил, что когда я запускал строки schtasks файла setupcomplete.cmd вручную в приглашении cmd без повышенных прав, я получал такое же поведение, как и при автоматическом запуске setupcomplete.cmd.
Затем я смог подтвердить, что мой файл autounattend.xml, который я не применял к своему изображению, действительно отключает UAC с записью:
<settings pass="offlineServicing">
<component name="Microsoft-Windows-LUA-Settings" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<EnableLUA>false</EnableLUA>
</component>
</settings>
После того, как я применил файл autounattend.xml к развернутому образу с показанными параметрами, setupcomplete.cmd смог успешно запустить команды schtasks.