2

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.

WebRoleにRDPした後にstartup.cmdファイルを実行すると、タスクはスケジューラーに問題なく追加されます。何らかの理由で、展開によって常に失敗します。誰かがこれを修正する方法を知っていますか?この問題を修正できるまで、OSVersion=2に戻しました。

4

2 に答える 2

0

まったく同じ問題があり、パーミッションの問題だと考えて数時間を無駄にした後、/TR パラメーターとして指定されたパスを二重引用符で囲む必要があることがわかりました。実はコマンドラインのパラメータがあったので、「\"appname.exe\"\"parameter\"」のように指定する必要がありました

あなたと同じように、私は自分のタスクで環境変数を使用していました-理由はわかりませんが、これは関連している可能性があります。また、あなたと同じように、RDP ユーザーとして起動するとタスクは正常に実行されましたが、SYSTEM で実際のスタートアップ タスクとして実行すると失敗しました。

数か月が経過したことはわかっているので、この問題から先に進んでいる可能性がありますが、引用が問題を解決するかどうかについても興味があります(ボーナスポイントについては、それが気にする理由の説明です!).

于 2013-05-08T22:34:26.627 に答える
0

その理由はおそらく、スクリプトを実行しているユーザーが (まだ) 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
于 2012-11-20T06:51:29.213 に答える