Runas SC使用空格停止远程服务

时间:2014-03-20 00:58:46

标签: cmd syntax-error runas

我正在使用sc命令远程重启runas下的进程。这与没有空格的服务完美配合,但如果它有空格,迫使我在'引号内使用runas "command",它就会失败,无法找到服务。

我已经检查了这个特定服务的属性以确保服务名称(它与显示名称相同)。

@ECHO OFF
REM Prompt for Domain & Username. Password will be prompted when run.
set /P Domainn=Enter Domain Name:
set /P Usern=Enter Username:

set service=workingservice
REM set service='Not a working service'

REM Define Start Stops
set userrunasstop=runas /profile /user:%domainn%\%usern% "sc \\%domainn% stop %service%"
set userrunasstart=runas /profile /user:%domainn%\%usern% "sc \\%domainn% start %service%"

:optionmenu
CLS
ECHO 1 - Stop Service
ECHO 2 - Start Service
ECHO q - Quit
ECHO.
set /P optionnum=Enter command number:
GOTO option%optionnum%

:option1
REM Stop Client
%userrunasstop%

goto optionmenu

:option2
REM Start Client
%userrunasstart%

goto optionmenu

:optionq
EXIT

此脚本效果很好,如图所示,但当我注释掉set service=workingservice并取消注释set service='Not a working service时,它不起作用。此外,如果我使用runas打开其打开的cmd.exe,我可以使用服务名称周围的引号成功运行sc命令。

1 个答案:

答案 0 :(得分:0)

我已在runas下打开一个新的命令提示符,为此问题设置了解决方法。并在新的命令提示符下调用另一个执行sc stop service命令的bat文件。这将删除导致错误的多次引用。

我仍在努力将变量从runas批处理文件传递到sc批处理文件,以允许%domain%变量输入sc命令。< / p>

档案runas.bat

set /P Domainn=Enter Domain Name:
set /P Usern=Enter Username:

runas /profile /user:%domainn%\%usern% "cmd sc.bat"

文件sc.bat(减去原始脚本中的所有装饰)

set service='Service with spaces'
sc \\domainname stop %service%