Using RMTShare.exe, I have scripted
SharePerms.bat to list the shares and permission on a 'server'.
The syntax for using SharePerms.bat is:
SharePerms ServerName
Where ServerName is the computer name of any computer that hosts one or more shares.
The ouptut is displayed in the CMD window and will look similar to:
"\\jsi001\print$" "\Everyone" "READ" "\\jsi001\print$" "BUILTIN\Administrators" "FULL CONTROL" "\\jsi001\JSI007Bkp" "\Everyone" "CHANGE" "\\jsi001\Fax" "\Everyone" "READ" "\\jsi001\Fax" "JSIINC\Domain Admins" "FULL CONTROL" "\\jsi001\Fax" "BUILTIN\Print Operators" "FULL CONTROL" "\\jsi001\Fax" "BUILTIN\Server Operators" "FULL CONTROL"You can pipe the output to a file using the following syntax:
SharePerms ServerName >FileName
You can use the output in subsequent commands, as in:
for /f "Tokens=*" %%i in ('SharePerms ServerName') do SomeCommand %%i
SharePerms.bat contains:
@echo off if \{%1\}==\{\} @echo Syntax SharePerms ServerName&goto :EOF setlocal set server=%1 set server=%server:\=% for /f "Skip=4 Tokens=*" %%s in ('rmtshare \\%server%') do ( if /i "%%s" NEQ "The command completed successfully." set line=%%s&call :parses ) endlocal goto :EOF :parses set work=%line: =#% set /a cnt=0 set share= :ploop call set char=%%work:~%cnt%^,1%% if "%char%" EQU "#" goto getshare if "%char%" EQU ":" goto fixshare set share=%share%%char% set /a cnt=%cnt% + 1 if %cnt% LSS 65 goto ploop goto :EOF :fixshare set /a cnt=%cnt% - 2 call set share=%%share:~0,%cnt%%% :getshare set Perm=N for /f "Skip=3 Tokens=*" %%p in ('rmtshare \\%server%\"%share%"') do set line=%%p&call :parsep goto :EOF :parsep if /i "%line%" EQU "The command completed successfully." goto :EOF if "%Perm%" EQU "Y" goto parsep1 if /i "%line%" EQU "Permissions:" set Perm=Y goto :EOF :parsep1 for /f "Tokens=1* Delims=:" %%a in ('@echo %line%') do set who=%%a#&set what=#%%b set who=%who: #=% set who=%who:#=% set what=%what:# =% set what=%what:#=% @echo "\\%server%\%share%" "%who%" "%what%"
0 comments
Hide comments