У меня есть скрипт ниже, который подключен к службе Windows по команде остановки:-

wmic service where name='%NS_SERVICE_NAME%' get ProcessId | more +1 > tmp.txt
set /p NS_PID=<tmp.txt
del tmp.txt
for /f %%i in ('wmic process where "(ParentProcessId=%NS_PID%)" get ProcessId ^| more +1') do (
    for /f %%a in ('wmic process where "(ParentProcessId=%%i)" get ProcessId ^| more +1') do (
        echo %%a|findstr "^[-][1-9][0-9]*$ ^[1-9][0-9]*$ ^0$">nul && TASKKILL /F /PID %%a || rem
        IF %ERRORLEVEL% NEQ 0 do (
           exit
        )
    )
)

который отлично работает в Windows 7 и служба останавливается быстро через 1-2 секунды, но в случае Windows Server 2012 служба не останавливается и остается в состоянии остановки, пока не завершится связанный с ней процесс.

Ошибка, которую я получаю в журналах, выглядит следующим образом:- «Нет доступных экземпляров».

Может ли кто-нибудь помочь мне в этом отношении.

0