subinacl获得完整输出

时间:2014-11-27 14:11:51

标签: windows shell windows-console

我们正在使用Windows控制台程序subinacl.exe授予用户停止和启动服务的权限。因此,我们使用以下命令:

subinacl.exe /service %SERVICE_NAME% /grant=%PC_NAME%\%USER_NAME%=PTO

,其中

  • %SERVICE_NAME% =服务名称
  • %PC_NAME% =计算机名称
  • %USER_NAME% =应成为启动和停止服务的权限的用户名称
  • PTO =开始和停止服务的权利(R只是阅读)

在Windows Server 2012上的默认Windows命令行(具有管理员权限)中键入命令时,结果为:

ELITE_INETRSVSERVER : delete Perm. ACE 4 test-pc\test
ELITE_INETRSVSERVER : new ace for test-pc\test
ELITE_INETRSVSERVER : 2 change(s)


Elapsed Time: 00 00:00:00
Done:        1, Modified        1, Failed        0, Syntax errors        0
Last Done  : ELITE_INETRSVSERVER

现在我们要将文本保存到文件中或将其放入程序中(通过重定向输出:Getting output from a shell/dos app into a Delphi app)。我们需要在结果中找到Done和Failed的整数值。

问题是,我们无法捕捉空行后的最后三行。

使用控制台重定向时,可以在文件result.txt中找到前三行。但最后三个显示在控制台中。

subinacl.exe /service %SERVICE_NAME% /grant=%PC_NAME%\%USER_NAME%=PTO > result.txt 1<&2

当以编程方式重定向输出时,我们遇到了同样的问题。

当然,每个命令都以管理员身份执行。

1 个答案:

答案 0 :(得分:0)

选项/错误日志可以帮助解决问题:

subinacl /outputlog=c:\NONERRORS.TXT /errorlog=C:\ERRORLOG.TXT /file C:\TEST.TXT /display

如果C:\ ERRORLOG.TXT文件为空,则表示该命令已成功执行。