subinacl get full output

拈花ヽ惹草 提交于 2019-12-24 02:44:38

问题


We are using the windows console program subinacl.exe to grant a user the right to stop and start a service. Therfore we use the following command:

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

where

  • %SERVICE_NAME% = name of the service
  • %PC_NAME% = name of the computer
  • %USER_NAME% = name of the user that should become the right to start and stop the service
  • PTO = right to start and stop the service (R would be just reading)

When typing the command into the default windows command line (with administrator rights) on a windows server 2012 the result is:

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

Now we want to save the text into a file or get it into a programm (via redirect the outputs : Getting output from a shell/dos app into a Delphi app). We need the integer values of Done and Failed found in the result.

The problem is, that we cannot catch the last three lines after the empty lines.

When using console redirect, the first three lines can be found in the file result.txt. But the last three are shown in the console.

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

The same problem we do have, when redirecting the output programmatically.

Of course every command is executed as administrator.


回答1:


The option /errorlog could help to solve the problem:

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

if C:\ERRORLOG.TXT file is empty it means that the command has been executed successfully.



来源:https://stackoverflow.com/questions/27172661/subinacl-get-full-output

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!