Развертывание Azure завершается сбоем из-за сценария запуска

Я запускаю сценарий запуска в соответствии со следующим в моем ServiceDefinition.csdef

<Startup>
  <Task commandLine="Microsoft.WindowsAzure.Caching\ClientPerfCountersInstaller.exe install" executionContext="elevated" taskType="simple" />
  <Task commandLine="startup.cmd" executionContext="elevated" taskType="simple" />
</Startup>

Файл startup.cmd

@echo off
REM StartupLog.txt can be found at (E or F):\approot\bin

Echo Copying MyUtil to system root                                                        >> StartupLog.txt 2>&1
copy /y MyUtil.exe %SystemRoot%                                                           >> StartupLog.txt 2>&1
IF ERRORLEVEL 1 GOTO ErrorExit

REM It's ok if the next fails, the task may not be scheduled 1st time
Echo Trying to delete MyUtil from scheduler                                               >> StartupLog.txt 2>&1
schtasks /Delete /F /TN "MyUtil"                                                          >> StartupLog.txt 2>&1

Echo Adding MyUtil to Scheduler                                                           >> StartupLog.txt 2>&1
schtasks /Create /SC MINUTE /MO 2 /SD 11/01/2012 /TN "MyUtil" /TR %SystemRoot%\MyUtil.exe >> StartupLog.txt 2>&1
IF ERRORLEVEL 1 GOTO ErrorExit                                                            >> StartupLog.txt 2>&1
GOTO End

:ErrorExit
REM   Report the date, time, and ERRORLEVEL of the error.
%ERRORLEVEL%                                                      >> StartupLog.txt 2>&1
DATE /T                                                           >> StartupLog.txt 2>&1
TIME /T                                                           >> StartupLog.txt 2>&1
ECHO An error occurred during startup. ERRORLEVEL = %ERRORLEVEL%  >> StartupLog.txt 2>&1
ECHO -----------------------------------------------------------  >> StartupLog.txt 2>&1
EXIT /B 1

:End    
ECHO Exiting at end with 0                                        >> StartupLog.txt 2>&1
ECHO -----------------------------------------------------------  >> StartupLog.txt 2>&1
EXIT /B 0

Ошибка в (E: или F:)\approot\bin:

Copying MyUtil to system root                                                        
        1 file(s) copied.
Trying to delete MyUtil from scheduler                                                
SUCCESS: The scheduled task "MyUtil" was successfully deleted.
Adding MyUtil to Scheduler                                                            
ERROR: No mapping between account names and security IDs was done.

(43,4):LogonType:'1' is not recognized as an internal or external command,
operable program or batch file.

Если я запускаю файл startup.cmd после RDP в WebRole, задачи добавляются в планировщик просто отлично. По какой-то причине он всегда терпит неудачу через развертывание. Кто-нибудь знает, как это исправить? Я вернулся к OSVersion=2, пока не смогу исправить эту проблему.


person DeepSpace101    schedule 11.11.2012    source источник
comment
Что такое УРОВЕНЬ ОШИБКИ? Вы должны вывести его в файл журнала >> "%TEMP%\StartupLog.txt".   -  person SliverNinja - MSFT    schedule 13.11.2012
comment
Как ни странно, в StartupLog.txt ничего не записывается. Когда я подключаюсь к машине по протоколу RDP, %TEMP% равно D:\Users\<RDP_User>\AppData\Local\Temp\2. Я обыскал всю виртуальную машину в поисках StartupLog.txt — ничего!   -  person DeepSpace101    schedule 14.11.2012


Ответы (2)


Причина, вероятно, в том, что пользователь, выполняющий ваш скрипт, еще не имеет каталога AppData. Можете ли вы попробовать добавить их в начало задачи запуска?

md "%~dp0appdata"
reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f
person maartenba    schedule 20.11.2012
comment
Не помогает, по-прежнему нет вывода, и скрипт по-прежнему не работает. Я знаю, что ErrorLevel!=0, так как обычное развертывание продолжительностью 11 минут длится примерно 1 час. Я также обновил OSFamily=3, так что мы работаем на Windows (Azure) Server 2012, но проблема осталась прежней. Есть идеи, под какой учетной записью запускается сценарий запуска? Пользователь RDP? Мне нужен более быстрый способ запуска исполняемого сценария запуска, чем полное повторное развертывание, чтобы быстро отладить это... - person DeepSpace101; 21.11.2012

У меня была точно такая же проблема, и, потратив несколько часов на размышления о проблеме с разрешениями, выяснилось, что нужны двойные кавычки вокруг пути, указанного в параметре /TR. На самом деле у меня были параметры командной строки, поэтому мне нужно было указать их как "\"appname.exe\" \"parameter\""

Как и вы, я использовал переменные среды в своей задаче - это может иметь значение, хотя я не уверен, почему. Также, как и вы, задача выполнялась нормально при запуске от имени моего пользователя RDP, она просто не удалась при запуске в качестве фактической задачи запуска в системе.

Я знаю, что прошло несколько месяцев, поэтому вы, возможно, отошли от этой проблемы, но мне любопытно, решают ли кавычки проблему для вас (и для бонусных баллов объяснение того, почему это важно!).

person Tom Hollander    schedule 08.05.2013