Omschrijving probleem:
Na een flinke migratie die inmiddels bijna afgerond is zijn we blijven zitten met een aantal SID's uit het vorige domein. Onze trust is inmiddels verwijderd, en nu willen we dit definitief gaan opschonen.
Oplossing:
Aangezien alle overgebleven SID's van het "oude" domein niet meer geresolved worden lezen we met het commando "for" alle SID's uit welke vervolgens weggeschreven worden naar een index. Door middel van SubInAcl verwijderen we vervolgens alle SID's die starten met S-1-5-21 (S-1-5-21 is was ons oude domein).
Probleem:
Het is ontzettend traag. Het bouwen van de Index duurt flink lang, het verwijderen van de SID duurt nog veel langer. Onze testserver was 4 dagen aan het stampen over een schamele 15GB.
Tijdens het opbouwen van de Index wordt de CPU volledig dichtgetrokken.
Ik ben geen kei in programmeren, maar dit moet toch sneller kunnen?
Hieronder de code:
P.S.
Ik post nooit in programmering, dus als mijn startpost niet helemaal volgens de lay-out is...sorry
Na een flinke migratie die inmiddels bijna afgerond is zijn we blijven zitten met een aantal SID's uit het vorige domein. Onze trust is inmiddels verwijderd, en nu willen we dit definitief gaan opschonen.
Oplossing:
Aangezien alle overgebleven SID's van het "oude" domein niet meer geresolved worden lezen we met het commando "for" alle SID's uit welke vervolgens weggeschreven worden naar een index. Door middel van SubInAcl verwijderen we vervolgens alle SID's die starten met S-1-5-21 (S-1-5-21 is was ons oude domein).
Probleem:
Het is ontzettend traag. Het bouwen van de Index duurt flink lang, het verwijderen van de SID duurt nog veel langer. Onze testserver was 4 dagen aan het stampen over een schamele 15GB.
Tijdens het opbouwen van de Index wordt de CPU volledig dichtgetrokken.
Ik ben geen kei in programmeren, maar dit moet toch sneller kunnen?
Hieronder de code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| @echo off
if {%1}=={} @echo Syntax RevokePermSID DriveOrFolder1 [DriveOrFolder2 ... DriveOrFolderN]&goto :EOF
setlocal
set work="%TEMP%\RevokePermSID_%RANDOM%.TMP"
:loop
if {%1}=={} goto finish
set obj=%1
shift
call :findSID %obj%
for /f "Tokens=*" %%a in ('dir %obj% /s /b /a') do (
call :findSID "%%a"
)
goto loop
:finish
del /q %work%
endlocal
goto :EOF
:findSID
subinacl /outputlog=%work% /nostatistic /File %1
for /f "Tokens=*" %%b in ('type %work%^|FIND "=S-1-5-21"') do (
for /f "Tokens=1* Delims==" %%c in ('@echo %%b') do (
for /f "Tokens=1" %%e in ('@echo %%d') do (
subinacl /nostatistic /File %1 /revoke=%%e
)
)
) |
P.S.
Ik post nooit in programmering, dus als mijn startpost niet helemaal volgens de lay-out is...sorry
MCSE on Windows 2003 & VMware Certified Professional