我正在使用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
命令。
答案 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%