공개 프로그램 SHOWMBRS와 표준 명령을 사용함으로서 그룹명과 사용자명을 포함한 CSV (Comma Seperated Value) 파일을 생성할 수 있다. 이 파일의 형식은
"GroupName","AccountBase\UserName"
이다. 여기서 AccountBase는 Domain Name이나 Computer Name이다.
도메인 제어기에서 이 프로그램을 실행하면서 Domain Name을 지정하면 AccountBase는 Domain Name일 것이다.
도메인 제어기에서 이 프로그램을 실행하면서 Domain Name을 지정하지 않으면 AccountBase는 Domain Global Group 멤버쉽에대해 널일 것이다.
서버나 웍스테이션에서 이 프로그램을 실행하면, GroupName은 로칼이며, AccountBase은 UserName이 로칼 계정인지, 도메인 계정인지를 지시할 것이다.
CSV 파일을 스프레드 쉬트, 워드 프로세서, 데이타베이스에서 불러올 수 있으므로 취향에 따라 문서를 꾸밀 수도 있다. 다음은 부분적인 데이타로 만든 간단한 질의이다.
| 사용자 |
총수 |
관리자 |
도메인관리자 |
도메인사용자 |
시험사용자 |
사용자 |
| DoA\Administrator |
3 |
1 |
1 |
1 |
0 |
0 |
| DoA\Domain Admins |
1 |
1 |
0 |
0 |
0 |
0 |
| DoA\Domain Users |
1 |
0 |
0 |
0 |
0 |
1 |
| DoA\Jennifer |
1 |
0 |
0 |
1 |
0 |
0 |
| DoA\JERRY |
3 |
1 |
1 |
1 |
0 |
0 |
| DoA\Test User |
2 |
0 |
0 |
1 |
1 |
0 |
| DoA\ULTRABAC |
3 |
1 |
1 |
1 |
0 |
0 |
이 스크립트는 로칼 그룹내의 전역 그룹 멤버쉽 또한 출력한다(DoA/Domain Users은 Users의 구성원이다).
DoAUserRpt.bat의 사용형식은 다음과 같다.
DoAUserRpt "\csvfile.csv" [Domain Name]
여기서
| 매개변수 |
설명 |
| "\csvfile.csv" |
보고서를 포함할 CSV 파일 |
| Domain Name |
Domain Name, DoAUserRpt를 Domain Controller에서 실행하는 경우, 적당한 값을 사용한다. |
DoAUserRpt.bat는 다음과 같은 내용을 포함한다.
@echo off
If "%1"=="" goto syntax
if exist %1 del /q %1
goto start
:syntax
@echo Syntax: DoAUserRpt Drive:\Path\UserRpt.csv DomainName
goto end
:start
set dom=
if "%2"=="" goto nodom
set dom=%2
set dom=%dom:"=%
:nodom
if exist %TEMP%\UserRpt.log del /q %TEMP%\UserRpt.log
net localgroup /domain|Findstr /b /c:"" %TEMP%\UserRpt.log
net group /domain|Findstr /b /c:"" %TEMP%\UserRpt.log
REM 다음은 한행이다.
for /f "tokens=1-3* delims=*" %%i in (%TEMP%\UserRpt.log) do call :group %1 "%%i"&call :group %1 "%%j"&call :group %1 "%%k"
set fix=
set grp=
set tst=
set dom=
goto end
:group
set grp=
set grp=%2
:strips
set fix=%grp%
REM 다음행은 :와 " 사이에 10개의 공백을 가지고 있다.
set grp=%grp: "="
REM 다음행은 :와 " 사이에 5개의 공백을 가지고 있다.
set grp=%grp: "="
REM 다음행은 :와 " 사이에 3개의 공백을 가지고 있다.
set grp=%grp: "="
set grp=%grp: "="%
if %grp%=="" goto end
if %grp%==%fix% goto goodgrp
goto strips
:goodgrp
for /f "Tokens=1-3*" %%i in ('showmbrs %grp%') do call :users %1 "%%i" "%%j" "%%k" "%%l"
goto end
:users
If not %5=="" goto end
set fix=%2%3%4%5
set fix=%fix:"""="%
set fix=%fix:"""="%
set fix=%fix:""= %
set tst=%fix:$"="%
if not %tst%==%fix% goto end
for /f "Tokens=1* Delims=\" %%i in (%fix%) do call :bslash "%%i" "%%j"
@echo %grp%,%fix% %1
goto end
:bslash
if not %2=="" goto end
if "%dom%"=="" goto end
set tst="%dom%\%fix%
set fix=%tst:\"=\%
:end
댓글: