您可以使用WMIC
获取计算机上定义的用户名列表,然后使用FOR
迭代每个用户名。下面的代码示例应该可以帮助您入门。
请注意,以下内容不会尝试过滤掉内置或其他“特殊”帐户。我也不确定引用语法是否适用于SUBINACL
. 我建议您在删除调用ECHO
前面的行之前检查它是否有所需的行为。SUBINACL
@echo off
title Applying Noah service rights, please wait...
cd c:/subinacl
FOR /F "usebackq" %%a IN (`WMIC UserAccount GET Name`) DO CALL :process_account "%%a"
pause
REM exit batch script file
EXIT /B
:process_account
SETLOCAL
REM strip any quotes from argument
SET ACCT=%~1
REM skip blank names
IF "%ACCT%"=="" EXIT /B
REM skip "Name" header from WMIC
IF "%ACCT%"=="Name" EXIT /B
ECHO Processing account: %1
REM remove the ECHO in front of SUBINACL once tested
ECHO subinacl /service NoahServer /grant="%Computername%\%ACCT%"=TOP
ECHO subinacl /service NoahClient /grant="%Computername%\%ACCT%"=TOP
REM return to CALLer
EXIT /B