xpwin7域數(shù)據(jù)遷移
網(wǎng)絡(luò)加域的項(xiàng)目,所有的用戶全部從工作組環(huán)境切換到域環(huán)境,本地賬號遷移到域賬號。因客戶端比較多,仔細(xì)研究了一下微軟的加域和用戶遷移工具,結(jié)合在網(wǎng)上搜到的一些腳本, Windows Xp,Windows
網(wǎng)絡(luò)加域的項(xiàng)目,所有的用戶全部從工作組環(huán)境切換到域環(huán)境,本地賬號遷移到域賬號。因客戶端比較多,仔細(xì)研究了一下微軟的加域和用戶遷移工具,結(jié)合在網(wǎng)上搜到的一些腳本, Windows Xp,Windows 7自動(dòng)加域及自動(dòng)遷移用戶配置文件的腳本。
該腳本使用到了幾個(gè)工具:
1、Netdom.exe :計(jì)算機(jī)加域用到,XP 和Windows 7須使用不同版本,可分別去2003和2008系統(tǒng)光盤里找。其中Windows 7還要使用到netdom.exe.mui 文件,該文件可到 2008系統(tǒng) windirsystem32en-US目錄下復(fù)制。
2、moveuser.exe :XP 系統(tǒng)遷移用戶配置工具,網(wǎng)上下載或2003系統(tǒng)里面找。
3、USMT 4.0工具包:Windows 7用戶配置遷移工具。網(wǎng)上下載,如果有安裝Win AIK 的,可以直接去目錄下找,具體路徑忘記了。其實(shí)這個(gè)工具的低版本也可以遷移XP 系統(tǒng),不過感覺比較復(fù)雜。
一、目錄準(zhǔn)備
收集齊了這幾個(gè)工具,先在C 盤根目錄下創(chuàng)建Domain_Migration目錄,該目錄結(jié)構(gòu)如下圖:USMT ,Win7,XP 三個(gè)目錄以及Auto.bat 文件
Win7文件夾下再放netdom.exe ,netdom.exe.mui ,Win7AutoAddDomain.bat 三個(gè)文件
Xp 文件夾下放moveuser.exe ,netdom.exe ,XpAutoAddDomain.bat
二、使用說明
1、將Domain_Migration文件夾復(fù)制到C 盤根目錄
2、以管理員身份運(yùn)行 Auto.bat
3、按照提示操作,更改計(jì)算機(jī)名后必須重啟,再次運(yùn)行Auto.bat 加域
4、加域后重啟,使用臨時(shí)域管理員登陸,再次運(yùn)行Auto.bat 轉(zhuǎn)移用戶配置文件
5、轉(zhuǎn)移完成后,注銷,使用域賬號登陸
6、刪除Domain_Migration文件夾
三、bat 文件詳細(xì)說明
1、Auto.bat:選擇操作系統(tǒng)類型,調(diào)用加域腳本,內(nèi)容比較簡單
@echo off
color 1e
ECHO ******選擇操作系統(tǒng)類型*******
:START
echo 1: winXP
echo 2: win 7
echo q: quit
SET /P OS_type=:
IF "OS_type"=="q" GoTo EOF
IF "OS_type"=="1" GoTo WinXp
IF "OS_type"=="2" GoTo Win7
echo 選擇有誤, 請重新選擇 & GoTo START
:WinXp
echo 你選擇了WinXP 系統(tǒng)!
call "c:Domain_MigrationxpXpAutoAddDomain.bat"
,exit
:Win7
echo 你選擇了Win7系統(tǒng)!
if not exist "windirsystem32 etdom.exe" copy "c:Domain_Migrationwin7netdom.exe" "windirsystem32" /y
if not exist "windirsystem32en-US etdom.exe.mui" copy "c:Domain_Migrationwin7 etdom.exe.mui" "windirsystem32en-US" /y
REM 調(diào)用Windows 7加域遷移腳本
call "c:Domain_Migrationwin7Win7AutoAddDomain.bat"
exit
:EOF
Exit
*********************************************************************** REM 腳本結(jié)束
2、XpAutoAddDomain.bat :更改計(jì)算機(jī)名,加域,遷移用戶配置文件
@echo off
color 1e
cd /d C:Domain_Migrationxp
::功能說明與使用說明注意事項(xiàng)
ECHO 請?jiān)谑褂帽灸_本前修改相應(yīng)的參數(shù)為實(shí)際值
set dns1=192.168.12.5
set dns2=192.168.2.3
REM 請?jiān)O(shè)置自己真實(shí)環(huán)境的域名、域管理員賬號和密碼
set domainname=test.com
set domainadminname=testadmin
set domainadminpassword=!@@#3^^
::判斷是否已經(jīng)加入域,如果加入了則直接跳轉(zhuǎn)
::wmic ntdomain get domainname | findstr /i "domainname
::if errorlevel equ 0 echo 該計(jì)算機(jī)已經(jīng)加入域 && goto moveuser
ipconfig /all | findstr /i "domainname" >nul && echo 該計(jì)算機(jī)已經(jīng)加入域, 準(zhǔn)備轉(zhuǎn)移配置文件 && goto moveuser
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當(dāng)前登陸用戶是否有管理員權(quán)限,如果沒有則注銷后重新以管理員登陸
:admin
ECHO ************************判斷當(dāng)前用戶權(quán)限******************
net user username | findstr "*Administrators"
if errorlevel equ 1 (echo 當(dāng)前用戶不是本地管理員,請注銷后使用有本地管理員權(quán)限的用戶登錄) else (goto DNS)
set /p logoff=現(xiàn)在要注銷嗎
if /i "logoff"=="y" logoff
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當(dāng)前DNS 設(shè)置是否為指定地址,如果不是,則清空當(dāng)前配置后重新設(shè)置DNS
,:DNS
ECHO *************************更改DNS****************************
netsh interface ip show dns | findstr "dns1" 1>nul && echo DNS已經(jīng)設(shè)置為dns1 && goto renamecomputername
echo 清理更改現(xiàn)有DNS...
for /f "skip=2 tokens=2,* " i in ('netsh interface show interface') do (
set netname=j
if "j"=="環(huán)回" goto back
if "j"=="內(nèi)部" goto back
netsh interface ip delete dns name="j" addr=all >nul
netsh interface ip add dns name="j" addr=dns1 index=1 >nul
netsh interface ip add dns name="j" addr=dns2 index=2 >nul
)
:back
echo DNS更改完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計(jì)算機(jī)名是否已經(jīng)更改,如更改則進(jìn)入下一部分;如未更改是否需要更改計(jì)算機(jī)名,更改完成后要求重新啟動(dòng)計(jì)算機(jī)
:renamecomputername
ECHO *********************更改計(jì)算機(jī)名****************************
set a=computername
echo 當(dāng)前計(jì)算機(jī)名為:a
set /p b=請輸入要修改的計(jì)算機(jī)名稱(跳過請輸入s) :
if /i "b"=="s" goto joindomain
if /i "b"=="" echo 計(jì)算機(jī)名不能為空 && goto renamecomputername
wmic computersystem Where name="a" call rename "b" >nul
if errorlevel equ 1 (echo 更改計(jì)算機(jī)名失敗, 請手工更改 && pause && exit) else (echo 計(jì)算機(jī)名已更改為b)
set /p reboot=更改計(jì)算機(jī)名完成,現(xiàn)在要重起嗎?y/n:
if /i "reboot"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計(jì)算機(jī)是否已加入域,如加入域則繼續(xù)下一部分;否則檢查相應(yīng)服務(wù)是否啟動(dòng),自動(dòng)加入域(用戶名密碼部分參數(shù)需要自行更改)
:joindomain
ECHO ***********************計(jì)算機(jī)加入域*************************
if /i "userdomain"=="domainname" goto moveuser
rem 判斷服務(wù)TCP/IP NetBIOS HELPER 服務(wù)是否禁用或未啟動(dòng),如果禁用則更改為自動(dòng),未啟動(dòng)則自動(dòng)啟動(dòng),否則顯示服務(wù)已啟動(dòng)
sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服務(wù)未啟動(dòng),正在啟動(dòng)服務(wù)... && sc config lmhosts start= auto && sc start lmhosts) || echo 服務(wù)已啟動(dòng)
if /i "userdomain"=="domainname" do (echo 計(jì)算機(jī)已加入域 && goto moveuser) if not exist netdom.exe echo 請將netdom 工具放到同文件夾下再嘗試運(yùn)行 && goto end
. etdom join computername /Domain:domainname /UserD:domainadminname
,/PasswordD:domainadminpassword || echo 加入域失敗,請檢查網(wǎng)絡(luò)環(huán)境及批處理參數(shù)是否正確 && goto end
set /p shutdown=加入域完成,現(xiàn)在要重起嗎?y/n:
if /i "shutdown"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::使用moveuser 工具對用戶配置文件進(jìn)行遷移(提示用戶輸入要遷移的用戶和要遷移到的用戶)
:moveuser
ECHO *********************用戶配置文件遷移*************************
if not exist moveuser.exe echo 請將MOVEUSER 工具放到同文件夾下再嘗試運(yùn)行 && goto end net user
:retry
set /p user=請輸入你要遷移的本地用戶賬戶名稱:
if /i "user"=="username" echo 轉(zhuǎn)移的用戶配置文件為當(dāng)前登陸用戶,請重新啟動(dòng)后使用域管理員登陸再進(jìn)行轉(zhuǎn)移 && goto end
net user user 2>nul 1>nul || echo 你輸入的本地賬戶不存在, 請重新輸入 && goto retry set /p domainuser=請輸入你要遷移到的域賬號名稱:
net user domainuser /domain 2>nul 1>nul
if errorlevel neq 0 (echo 你要轉(zhuǎn)移到的域賬戶尚未建立,請建立后重新嘗試遷移) && goto end
moveuser user domainnamedomainuser /k /y | findstr /i "failed" 2>nul 1>nul && echo 用戶配置文件遷移失敗,請檢查配置 && goto end
::if errorlevel neq 0 echo 用戶配置文件遷移失敗,請檢查配置 && goto end
::如果是從本機(jī)管理員用戶遷移,則域用戶也變成管理員,此處刪除域用戶管理員權(quán)限,加入PowerUsers 群組,可自行更改
echo 更改域用戶為Power User權(quán)限
net localgroup administrators domainnamedomainuser /delete
net localgroup "Power Users" domainnamedomainuser /add
echo 配置文件遷移成功,請注銷后使用您的域賬號登陸
set /p logoff=現(xiàn)在要注銷嗎?y/n:
if /i "logoff"=="y" logoff
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::結(jié)束退出
:end
pause>nul
exit
****************************************************************
REM 腳本結(jié)束
3、Win7AutoAddDomain.bat ,更改計(jì)算機(jī)名,加域,遷移用戶配置文件
@echo off
color 1e
::功能說明與使用說明注意事項(xiàng)
,ECHO 請?jiān)谑褂帽灸_本前修改相應(yīng)的參數(shù)為實(shí)際值
set dns1=192.168.12.5
set dns2=192.168.2.3
REM 請?jiān)O(shè)置自己真實(shí)環(huán)境的域名、域管理員賬號和密碼
set domainname=test.com
set domainadminname=testadmin
set domainadminpassword=!@@#3^^
::判斷是否已經(jīng)加入域,如果加入了則直接跳轉(zhuǎn)
::wmic ntdomain get domainname | findstr /i "domainname
::if errorlevel equ 0 echo 該計(jì)算機(jī)已經(jīng)加入域 && goto moveuser
ipconfig /all | findstr /i "domainname" >nul && echo 該計(jì)算機(jī)已經(jīng)加入域, 準(zhǔn)備轉(zhuǎn)移配置文件 && goto moveuser
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當(dāng)前登陸用戶是否有管理員權(quán)限,如果沒有則注銷后重新以管理員登陸
:admin
ECHO ************************判斷當(dāng)前用戶權(quán)限******************
net user username | findstr "*Administrators"
if errorlevel equ 1 (echo 當(dāng)前用戶不是本地管理員,請注銷后使用有本地管理員權(quán)限的用戶登錄) else (goto DNS)
set /p logoff=現(xiàn)在要注銷嗎
if /i "logoff"=="y" logoff
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當(dāng)前DNS 設(shè)置是否為指定地址,如果不是,則清空當(dāng)前配置后重新設(shè)置DNS :DNS
ECHO *************************更改DNS****************************
netsh interface ip show dns | findstr "dns1" 1>nul && echo DNS已經(jīng)設(shè)置為dns1 && goto renamecomputername
echo 清理更改現(xiàn)有DNS...
for /f "skip=2 tokens=2,* " i in ('netsh interface show interface') do (
set netname=j
if "j"=="環(huán)回" goto back
if "j"=="內(nèi)部" goto back
netsh interface ip delete dns name="j" addr=all >nul
netsh interface ip add dns name="j" addr=dns1 index=1 >nul
netsh interface ip add dns name="j" addr=dns2 index=2 >nul
)
:back
echo DNS更改完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計(jì)算機(jī)名是否已經(jīng)更改,如更改則進(jìn)入下一部分;如未更改是否需要更改計(jì)算機(jī)名,更改完成后要求重新啟動(dòng)計(jì)算機(jī)
:renamecomputername
ECHO *********************更改計(jì)算機(jī)名****************************
set a=computername
,echo 當(dāng)前計(jì)算機(jī)名為:a
set /p b=請輸入要修改的計(jì)算機(jī)名稱(跳過請輸入s) :
if /i "b"=="s" goto joindomain
if /i "b"=="" echo 計(jì)算機(jī)名不能為空 && goto renamecomputername
wmic computersystem Where name="a" call rename "b" >nul
if errorlevel equ 1 (echo 更改計(jì)算機(jī)名失敗, 請手工更改 && pause && exit) else (echo 計(jì)算機(jī)名已更改為b)
set /p reboot=更改計(jì)算機(jī)名完成,現(xiàn)在要重起嗎?y/n:
if /i "reboot"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計(jì)算機(jī)是否已加入域,如加入域則繼續(xù)下一部分;否則檢查相應(yīng)服務(wù)是否啟動(dòng),自動(dòng)加入域(用戶名密碼部分參數(shù)需要自行更改)
:joindomain
ECHO ***********************計(jì)算機(jī)加入域*************************
if /i "userdomain"=="domainname" goto moveuser
rem 判斷服務(wù)TCP/IP NetBIOS HELPER 服務(wù)是否禁用或未啟動(dòng),如果禁用則更改為自動(dòng),未啟動(dòng)則自動(dòng)啟動(dòng),否則顯示服務(wù)已啟動(dòng)
sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服務(wù)未啟動(dòng),正在啟動(dòng)服務(wù)... && sc config lmhosts start= auto && sc start lmhosts) || echo 服務(wù)已啟動(dòng)
if /i "userdomain"=="domainname" do (echo 計(jì)算機(jī)已加入域 && goto moveuser)
. etdom join computername /Domain:domainname /UserD:domainadminname /PasswordD:domainadminpassword || echo 加入域失敗,請檢查網(wǎng)絡(luò)環(huán)境及批處理參數(shù)是否正確 && goto end
echo 加入域完成, 重啟電腦后請使用域管理員帳戶登陸轉(zhuǎn)移個(gè)人配置文件!
set /p shutdown=現(xiàn)在要重起嗎?y/n:
if /i "shutdown"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::使用moveuser 工具對用戶配置文件進(jìn)行遷移(提示用戶輸入要遷移的用戶和要遷移到的用戶)
:moveuser
ECHO *********************用戶配置文件遷移*************************
net user
:retry
set /p user=請輸入你要遷移的本地用戶賬戶名稱:
if /i "user"=="username" echo 轉(zhuǎn)移的用戶配置文件為當(dāng)前登陸用戶,請重新啟動(dòng)后使用域管理員登陸再進(jìn)行轉(zhuǎn)移 && goto end
net user user 2>nul 1>nul || echo 你輸入的本地賬戶不存在, 請重新輸入 && goto retry set /p domainuser=請輸入你要遷移到的域賬號名稱:
net user domainuser /domain 2>nul 1>nul
if errorlevel neq 0 (echo 你要轉(zhuǎn)移到的域賬戶尚未建立,請建立后重新嘗試遷移) && goto end
cd /d C:Domain_MigrationUSMTx86
,echo 正在備份個(gè)人配置文件,請耐心等候......
scanstate fileservermigrationcomputername-user /c /i:miguser.xml /i:migapp.xml /v:13 /ue:** /ui:computernameuser /l:scan.log /localonly /o /efs:copyraw
echo 正在轉(zhuǎn)移個(gè)人配置文件,請耐心等候......
loadstate fileservermigrationcomputername-user /mu:computernameuser:domainnamedomainuser /i:miguser.xml /i:migapp.xml /v:13
echo 將域賬號加入本地PowerUser 群組
net localgroup administrators domainnamedomainuser /delete
net localgroup "Power Users" domainnamedomainuser /add
echo 刪除臨時(shí)文件
del "windirsystem32netdom.exe"
del "windirsystem32en-USnetdom.exe.mui"
echo 配置文件遷移成功,請注銷后使用您的域賬號登陸
set /p logoff=現(xiàn)在要注銷嗎?y/n:
if /i "logoff"=="y" logoff
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::結(jié)束退出
:end
pause>nul
exit