Hier wird auf Server2 eine cmd-Datei angelegt, mit der sehr schnell die Benutzer von einem Server zu einem anderen umgestellt werden können. Es werden sowohl die Freigaben, als auch die Profile umgestelt, wobei davon ausgegangen wird, dass die Pfade auf den Servern identisch sind!
Vor allem in Zusammenarbeit mit dem ShareExport.cmd gedacht!
@echo off setlocal set DESSRV=Server2 rem *** Dies ist der Server, wo hingezogen wird, dort wird auch die neue CMD abgelegt. set MOVESCRIPT=\\%DESSRV%\D$\move_home_profile.cmd call :GENTIMESTAMP echo rem *** %MOVESCRIPT% erzeugt %DATESTAMP% %TIMESTAMP% ***>%MOVESCRIPT% set DomCon=myDC rem *** DomCon ist der DomainController set BaseDN="CN=Users,DC=mydomain,DC=de" rem *** Zuerst holen wir mal die Liste der Accounts ab... set FILTERS="(objectclass=user)" set LDAPAttributeList="saMAccountName" ldifde.exe -f Userliste.ldf -s %DomCon% -d %BaseDN% -r %FILTERS% -l %LDAPAttributeList% for /F "tokens=1,2" %%i in (Userliste.ldf) do call :GETUSERDETAILS %%i %%j if exist Userliste.ldf del Userliste.ldf echo. echo '%MOVESCRIPT%' erzeugt. echo. endlocal pause goto :EOF :GETUSERDETAILS set UsrHome= set UsrProf= set DATACHANGED=no if "%1" NEQ "sAMAccountName:" goto :EOF set sAMAccountName=%2 echo. echo *** Working on "%sAMAccountName%" set FILTERS=(saMAccountName=%sAMAccountName%) set LDAPAttributeList="dn, saMAccountName, homeDirectory, profilePath" ldifde.exe -f Userdetails_%sAMAccountName%.ldf -s %DomCon% -d %BaseDN% -r %FILTERS% -l %LDAPAttributeList% rem *** Checken wir ob der User ein Homedir hat... for /F "tokens=1,2" %%i in ('findstr /B /C:"homeDirectory:" Userdetails_%sAMAccountName%.ldf') do set UsrHome=%%j if .%UsrHome% NEQ . call :SETUSRHOME rem *** Checken wir ob der User ein Profil hat... for /F "tokens=1,2" %%i in ('findstr /B /C:"profilePath:" Userdetails_%sAMAccountName%.ldf') do set UsrProf=%%j if .%UsrProf% NEQ . call :SETUSRPROF if %DATACHANGED%==no del Userdetails_%sAMAccountName%.ldf&goto :EOF rem *** Dann können wir den Benutzer "umschießen": echo net user %sAMAccountName% /homedir:%UsrHome% /profilepath:%UsrProf% /DOMAIN>>%MOVESCRIPT% del Userdetails_%sAMAccountName%.ldf goto :EOF :SETUSRHOME set DATACHANGED=yes set UsrHome=\\%DESSRV%\%UsrHome:~7% rem echo %UsrHome% goto :EOF :SETUSRPROF set DATACHANGED=yes set UsrProf=\\%DESSRV%\%UsrProf:~7% rem echo %UsrProf% goto :EOF :GENTIMESTAMP rem ************************************************************************** rem *** Generiert Datum und Uhrzeit in umgekehrter Notation *** rem ************************************************************************** for /F "tokens=1,2 delims= " %%i in ('date /t') do call :BUILDDATESTAMP %%i %%j for /F "tokens=1,2,3 delims=: " %%i in ('time /t') do call :BUILDTIMESTAMP=%%i %%j %%k goto :EOF :BUILDDATESTAMP rem ************************************************************************** rem *** Baut das Datum zusammen (Fallunterschiedung Deutsch / Englisch) *** rem ************************************************************************** if .%2==. (set ANLAYSEDATE=%1) else (set ANLAYSEDATE=%2) if .%ANLAYSEDATE:~2,1%==./ for /F "tokens=1,2,3 delims=/" %%i in ("%ANLAYSEDATE%") do set DATESTAMP=%%k%%i%%j if .%ANLAYSEDATE:~2,1%==.. for /F "tokens=1,2,3 delims=." %%i in ("%ANLAYSEDATE%") do set DATESTAMP=%%k%%j%%i goto :EOF :BUILDTIMESTAMP rem ************************************************************************** rem *** Baut die Uhrzeit zusammen (Fallunterscheidung Deutsch / Englisch) *** rem ************************************************************************** set TIMEHH=%1 set TIMEMM=%2 set TIMEAP=%3 if .%TIMEMM:~2,1% NEQ . set TIMEAP=%TIMEMM:~2,1%& set TIMEMM=%TIMEMM:~0,2% if .%TIMEHH:~1,1%==. set TIMEHH=0%TIMEHH% set TIMESTAMP=%TIMEAP%%TIMEHH%%TIMEMM% set TIMESTAMP=%TIMESTAMP: =% goto :EOF |