2017-12-12 12 views
0

のためのコードの特定の行を実行します。は、スクリプトのWindows PC上の各ユーザー/

@echo off 
title Applying Noah service rights, please wait... 
cd c:/subinacl 
subinacl /service NoahServer /grant=%Computername%\user=TOP 
subinacl /service NoahClient /grant=%Computername%\user=TOP 
pause 

このスクリプトは、特定のサービス上SUBINACLユーザーに管理者権限を使用して付与されます。しかし、あなたが見ることができるように、これはコンピュータ%Computerername%上の(ユーザ)という名前の1人のユーザに対してのみです。

ローカルコンピュータ上のすべてのユーザーに対してSubinaclで始まる2行を実行する可能性があるのだろうかと思っていました。

おかげ

答えて

0

あなたがコンピュータ上で定義されたユーザ名のリストを取得するにはWMICを使用し、各1を反復処理するためにFORを使用することができます。以下のコードサンプルは、あなたが開始する必要があります。

以下では、組み込みアカウントやその他の「特別な」アカウントを除外しないように注意してください。私はまた、SUBINACLに適用される構文を引用するのが不安です。 SUBINACLコールの前にあるECHO行を削除する前に、その動作を確認することをお勧めします。

@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 
+0

私はこれをできるだけ早く試してみます。返信いただきありがとうございます! – Raoul

+0

こんにちは!これは私がそれを視覚化しているのと同じように機能しました。 – Raoul

関連する問題