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