09.03.2007, 14:50 | #1 |
Участник
|
axaptapedia: Control AOS from command line
Источник: http://www.axaptapedia.com/Control_A...m_command_line
============== Summary: new article - aos control from command line ==Controlling the AOS from the command line== When automating backups, restores, testing etc, it is often useful to be able to control the stopping and starting of the Dynamics AX 4.0 AOS services from a batch file or DOS prompt. These two simple DOS batch files allow you to do so, and wait for the action to complete before returning control to the caller. ===Starting the AOS=== ''Takes two parameters, %1 == server name (with slashes, e.g. \SVR01), %2 = AOS name (the actual service name, which is reality is AOS$01, AOS$02 and so on)'' Filename: startAOSWait.bat Contents: @echo off REM %1 is server name with slashes, %2 is service name REM Try to start service sc.exe %1 start %2 | FIND "FAILED" IF NOT ERRORLEVEL 1 GOTO ENDCHECK REM Loop until service is started or max counter is reached SET /a COUNT = 1 :LOOP1 sc %1 query %2 | FIND "STATE" | FIND "RUNNING" IF NOT ERRORLEVEL 1 GOTO ENDOK REM ** Running ** SET /a COUNT=COUNT+1 IF %COUNT% GEQ 1000 GOTO ENDFAILED GOTO LOOP1 :ENDCHECK REM ** Start failed, but maybe already running so check sc %1 query %2 | FIND "STATE" | FIND "RUNNING" IF NOT ERRORLEVEL 1 GOTO ENDOK GOTO ENDFAILED :ENDOK REM ** Started OK so exist with errorlevel 0** ECHO STARTED OK EXIT /B 0 :ENDFAILED: REM ** Failed to start so exist with errorlevel 1** ECHO STARTING FAILED EXIT /B 1 This script will set an error level of 0 if the service was already running, or successfully started, and an error level of 1 otherwise. ' ===Stopping the AOS=== ''Takes two parameters, %1 = server name (with slashes, e.g. \SVR01), %2 = AOS name (the actual service name, which is in the format of AOS$01, AOS$02 and so on)'' Filename: stopAOSWait.bat Contents: @echo off REM %1 is server name with slashes, %2 is service name REM Try to stop service sc.exe %1 stop %2 | FIND "FAILED" IF NOT ERRORLEVEL 1 GOTO ENDCHECK REM Loop until service is stopped or 30000 counter is reached SET /a COUNT = 1 :LOOP1 sc %1 query %2 | FIND "STATE" | FIND "STOPPED" IF NOT ERRORLEVEL 1 GOTO ENDOK REM ** Running ** SET /a COUNT=COUNT+1 IF %COUNT% GEQ 1000 GOTO ENDFAILED GOTO LOOP1 :ENDCHECK REM ** Stop failed, but maybe already stopped so check sc %1 query %2 | FIND "STATE" | FIND "STOPPED" IF NOT ERRORLEVEL 1 GOTO ENDOK GOTO ENDFAILED :ENDOK REM ** Stopped OK so exist with errorlevel 0** ECHO STOPPED OK EXIT /B 0 :ENDFAILED: REM ** Failed to stop so exist with errorlevel 1** ECHO STOP FAILED EXIT /B 1 This script will set an error level of 0 if the service was already stopped, or was successfully stopped, and an error level of 1 otherwise. ===Running the scripts=== These scripts can be run stand-alone, or from another batch file. If you call them from another batch file then you should use the "call" syntax to do so. call stopAOSWait.bat \AXAPTA01 AOS$01 REM Do something here like copying application files, restoring a database etc call startAOSWait.bat \AXAPTA01 AOS$01 Источник: http://www.axaptapedia.com/Control_A...m_command_line |
|
|
За это сообщение автора поблагодарили: Logger (1). |
|
|