如何自動加域及遷移用戶配置文件呢?

如何自動加域及遷移用戶配置文件呢?

域加入

很多企業都有域環境,有些時候需要把一大批的人員加入到域,加域很簡單,但是用戶配置文件遷移比較麻煩。接下來就來說說如何用自動化的工具來實現遷移。

遷移肯定麻煩,所以索性利用腳本來實現自動化遷移,廢話不多說,工具準備:

1、USMT(用戶狀態遷移工具)微軟官方提供,USMT最新版本是USMT10.0

2、netdom命令工具(加域命令),腳本中用到

3、修改系統 SID的工具

說下工具如何獲取:

USMT工具可以在微軟官網獲得,Windows 7系統可以下載Windows AIK進行獲取,使用的是USMT4.0版本,下載地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=5753

Windows 10系統就需要在官網下載ADK攻擊安裝後,去尋找,版本USMT10.0:https://docs.microsoft.com/zh-cn/windows-hardware/get-started/adk-install#winADK

在安裝後的相關目錄下尋找吧,不要忘記看好相關係統選擇相應的版本工具。

我其實已經打包好了相關的系統工具包,如圖:

如何自動加域及遷移用戶配置文件呢?

自動化腳本遷移

USMT工具:

如何自動加域及遷移用戶配置文件呢?

USMT

如何自動加域及遷移用戶配置文件呢?

系統類型

這工具都準備好,等下腳本就是需要調用這些工具的命令

如何自動加域及遷移用戶配置文件呢?

win7

如何自動加域及遷移用戶配置文件呢?

win10

Auto.bat腳本說明:

:: 文件:Auto.bat
:: 用途:加域遷移用戶數據腳本
:: 創建:2018-11-11
:: 修改:2018-12-01
:: 備註:將本地計算機添加到域並遷移用戶數據
::
@echo off
color 1e
title 加域遷移用戶數據腳本
echo 請用系統管理員帳戶運行本程序,否則加域操作無法正常進行!
echo.
echo ******選擇操作系統類型*******
:START
echo.
echo 1: 重置系統SID(NewSID)
echo 2: Windows7 x64
echo 3: Windows10 x64
echo q: Quit
echo.
SET /P OS_type=系統類型[1-3 or q]:
IF "%OS_type%"=="q" GoTo EOF
IF "%OS_type%"=="1" GoTo Newsid
IF "%OS_type%"=="2" GoTo Win7x64
IF "%OS_type%"=="3" GoTo Win10x64
echo 選擇有誤,請重新選擇 & GoTo START
::WinXp
::echo 你選擇了WinXP系統!
::call "c:\Domain_Migration\\xp\XpAutoAddDomain.bat"
::exit
:Win7x64
echo 你選擇了Win7系統64位!
if not exist "%windir%\system32\netdom.exe" copy "c:\Domain_Migration\win7\netdomx64\netdom.exe" "%windir%\system32" /y
if not exist "%windir%\system32\zh-CN\netdom.exe.mui" copy "c:\Domain_Migration\win7\netdomx64\netdom.exe.mui" "%windir%\system32\zh-CN" /y

if not exist "%windir%\system32\en-US\netdom.exe.mui" copy "c:\Domain_Migration\win7\netdomx64\netdom.exe.mui" "%windir%\system32\en-US" /y
REM 調用Windows 7 x64加域遷移腳本
call "c:\Domain_Migration\win7\Win7x64AutoAddDomain.bat"
exit
:Win10x64
echo 你選擇了Win10系統64位!
if not exist "%windir%\system32\netdom.exe" copy "c:\Domain_Migration\win10\netdomx86\netdom.exe" "%windir%\system32" /y
if not exist "%windir%\system32\zh-CN\netdom.exe.mui" copy "c:\Domain_Migration\win10\netdomx64\netdom.exe.mui" "%windir%\system32\zh-CN" /y
if not exist "%windir%\system32\en-US\netdom.exe.mui" copy "c:\Domain_Migration\win10\netdomx64\netdom.exe.mui" "%windir%\system32\en-US" /y
REM 調用Windows 10 x64加域遷移腳本
call "c:\Domain_Migration\win10\Win10x64AutoAddDomain.bat"
exit
:Newsid
echo 你選擇了重置系統SID並改計算機名
set a=%computername%
echo 當前計算機名為:%a%
set /p newname=將用 NewSID 重置SID並改計算機名,請輸入新計算機名:
if "%newname%"=="" echo 計算機名不能為空,請重新選擇。&pause&endlocal&cls&goto Start
echo 即將更新SID,計算機名將從 %computername% 更改為 %Newname% 注:更改SID完成後將重新啟動計算機
pause
c:\Domain_Migration\newsid /a %Newname%
goto end
:EOF
Exit

詳細說下:腳本中的call "C:\Domain_Migration\win7\Win7x64AutoAddDomain.bat"

和call "C:\Domain_Migration\win10\Win10x64AutoAddDomain.bat"。

Domain_Migration的目錄全部複製到C盤根目錄下,在auto.bat的腳本中直接調用win7和win10各自的腳本進行操作。

Win7x64AutoAddDomain.bat:

:: 文件:Win7x64AutoAddDomain.bat
:: 用途:用於Windows 7 64位的系統客戶端更改計算機名,加域,遷移用戶配置文件的腳本
:: 創建:2018-11-11
:: 修改:2018-12-01
:: 備註:需要修改一些實際參數和配置
::
@echo off
color 1e
::功能說明與使用說明注意事項
ECHO 請在使用本腳本前修改相應的參數為實際值
::dns1指向為主域控的DNS,dns2指向為輔助域控的DNS,請自行修改
set dns1=114.114.114.114
set dns2=114.114.115.115
REM 請設置自己真實環境的域名、域管理員賬號和密碼
set domainname=xxx.com
set [email protected]
set domainadminpassword=xxx
::判斷是否已經加入域,如果加入了則直接跳轉
::wmic ntdomain get domainname | findstr /i "%domainname%
::if %errorlevel% equ 0 echo 該計算機已經加入域 && goto moveuser
ipconfig /all | findstr /i "%domainname%" >nul && echo 該計算機已經加入域,準備轉移配置文件 && goto moveuser
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前登陸用戶是否有管理員權限,如果沒有則註銷後重新以管理員登陸
:admin
ECHO ************************判斷當前用戶權限******************
net user %username% | findstr "*Administrators"
if %errorlevel% equ 1 (echo 當前用戶不是本地管理員,請註銷後使用有本地管理員權限的用戶登錄) else (goto DNS)

set /p logoff=現在要註銷嗎
if /i "%logoff%"=="y" logoff
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前DNS設置是否為指定地址,如果不是,則清空當前配置後重新設置DNS
:DNS
ECHO *************************更改DNS****************************
netsh interface ip show dns | findstr "%dns1%" 1>nul && echo DNS已經設置為%dns1% && goto renamecomputername
echo 清理更改現有DNS...
for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (
set netname=%%j
if "%%j"=="環回" goto back
if "%%j"=="內部" 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更改完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機名是否已經更改,如更改則進入下一部分;如未更改是否需要更改計算機名,更改完成後要求重新啟動計算機
:renamecomputername
ECHO *********************更改計算機名****************************
set a=%computername%
echo 當前計算機名為:%a%
set /p b=請輸入要修改的計算機名稱(跳過請輸入s):
if /i "%b%"=="s" goto joindomain
if /i "%b%"=="" echo 計算機名不能為空 && goto renamecomputername
wmic computersystem Where name="%a%" call rename "%b%" >nul
if %errorlevel% equ 1 (echo 更改計算機名失敗,請手工更改 && pause && exit) else (echo 計算機名已更改為%b%)
set /p reboot=更改計算機名完成,現在要重起嗎?y/n:
if /i "%reboot%"=="y" shutdown /r /t 0
goto end

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機是否已加入域,如加入域則繼續下一部分;否則檢查相應服務是否啟動,自動加入域(用戶名密碼部分參數需要自行更改)
:joindomain
ECHO ***********************計算機加入域*************************
if /i "%userdomain%"=="%domainname%" goto moveuser
rem 判斷服務TCP/IP NetBIOS HELPER服務是否禁用或未啟動,如果禁用則更改為自動,未啟動則自動啟動,否則顯示服務已啟動
sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服務未啟動,正在啟動服務... && sc config lmhosts start= auto && sc start lmhosts) || echo 服務已啟動
if /i "%userdomain%"=="%domainname%" do (echo 計算機已加入域 && goto moveuser)
netdom join %computername% /Domain:%domainname% /UserD:%domainadminname% /PasswordD:%domainadminpassword% || echo 加入域失敗,請檢查網絡環境及批處理參數是否正確 && goto end
echo 加入域完成,重啟電腦後請使用域管理員帳戶登陸轉移個人配置文件!
set /p shutdown=現在要重啟嗎?y/n:
if /i "%shutdown%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::使用moveuser(USMT)工具對用戶配置文件進行遷移(提示用戶輸入要遷移的用戶和要遷移到的用戶)
:moveuser
ECHO *********************用戶配置文件遷移*************************
net user
:retry
set /p user=請輸入你要遷移的本地用戶賬戶名稱:
if /i "%user%"=="%username%" echo 轉移的用戶配置文件為當前登陸用戶,請重新啟動後使用域管理員登陸再進行轉移 && 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 你要轉移到的域賬戶尚未建立,請建立後重新嘗試遷移) && goto end
cd /d C:\Domain_Migration\USMT\USMT4.0\amd64
echo 正在備份個人配置文件,請耐心等候......
scanstate \\fileserver\migration\%computername%-%user% /c /i:miguser.xml /i:migapp.xml /v:13 /ue:*\* /ui:%computername%\%user% /l:scan.log /localonly /o /efs:copyraw
echo 正在轉移個人配置文件,請耐心等候......
loadstate \\fileserver\migration\%computername%-%user% /mu:%computername%\%user%:%domainname%\%domainuser% /i:miguser.xml /i:migapp.xml /v:13 /l:load.log
echo 將域賬號加入本地PowerUser群組
net localgroup administrators %domainname%\%domainuser% /delete
net localgroup "Power Users" %domainname%\%domainuser% /add
echo 刪除臨時文件
del "%windir%\system32\netdom.exe"
del "%windir%\system32\zh-CN\netdom.exe.mui"
del "%windir%\system32\en-US\netdom.exe.mui"
echo 配置文件遷移成功,請註銷後使用您的域賬號登陸
set /p logoff=現在要註銷嗎?y/n:
if /i "%logoff%"=="y" logoff
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::結束退出
:end
pause>nul
exit

Win10x64AutoAddDomain.bat:

:: 文件:Win10x64AutoAddDomain.bat
:: 用途:用於Windows 10 64位的系統客戶端更改計算機名,加域,遷移用戶配置文件的腳本
:: 創建:2018-11-11
:: 修改:2018-12-01

:: 備註:需要修改一些實際參數和配置
::
@echo off
color 1e
::功能說明與使用說明注意事項
ECHO 請在使用本腳本前修改相應的參數為實際值
::dns1指向為主域控的DNS,dns2指向為輔助域控的DNS,請自行修改
set dns1=114.114.114.114
set dns2=114.114.115.115
REM 請設置自己真實環境的域名、域管理員賬號和密碼
set domainname=xxx.com
set [email protected]
set domainadminpassword=xxx
::判斷是否已經加入域,如果加入了則直接跳轉
::wmic ntdomain get domainname | findstr /i "%domainname%
::if %errorlevel% equ 0 echo 該計算機已經加入域 && goto moveuser
ipconfig /all | findstr /i "%domainname%" >nul && echo 該計算機已經加入域,準備轉移配置文件 && goto moveuser
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前登陸用戶是否有管理員權限,如果沒有則註銷後重新以管理員登陸
:admin
ECHO ************************判斷當前用戶權限******************
net user %username% | findstr "*Administrators"
if %errorlevel% equ 1 (echo 當前用戶不是本地管理員,請註銷後使用有本地管理員權限的用戶登錄) else (goto DNS)
set /p logoff=現在要註銷嗎
if /i "%logoff%"=="y" logoff
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷當前DNS設置是否為指定地址,如果不是,則清空當前配置後重新設置DNS

:DNS
ECHO *************************更改DNS****************************
netsh interface ip show dns | findstr "%dns1%" 1>nul && echo DNS已經設置為%dns1% && goto renamecomputername
echo 清理更改現有DNS...
for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (
set netname=%%j
if "%%j"=="環回" goto back
if "%%j"=="內部" 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更改完成
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機名是否已經更改,如更改則進入下一部分;如未更改是否需要更改計算機名,更改完成後要求重新啟動計算機
:renamecomputername
ECHO *********************更改計算機名****************************
set a=%computername%
echo 當前計算機名為:%a%
set /p b=請輸入要修改的計算機名稱(跳過請輸入s):
if /i "%b%"=="s" goto joindomain
if /i "%b%"=="" echo 計算機名不能為空 && goto renamecomputername
wmic computersystem Where name="%a%" call rename "%b%" >nul
if %errorlevel% equ 1 (echo 更改計算機名失敗,請手工更改 && pause && exit) else (echo 計算機名已更改為%b%)
set /p reboot=更改計算機名完成,現在要重起嗎?y/n:
if /i "%reboot%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::判斷計算機是否已加入域,如加入域則繼續下一部分;否則檢查相應服務是否啟動,自動加入域(用戶名密碼部分參數需要自行更改)

:joindomain
ECHO ***********************計算機加入域*************************
if /i "%userdomain%"=="%domainname%" goto moveuser
rem 判斷服務TCP/IP NetBIOS HELPER服務是否禁用或未啟動,如果禁用則更改為自動,未啟動則自動啟動,否則顯示服務已啟動
sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服務未啟動,正在啟動服務... && sc config lmhosts start= auto && sc start lmhosts) || echo 服務已啟動
if /i "%userdomain%"=="%domainname%" do (echo 計算機已加入域 && goto moveuser)
netdom join %computername% /Domain:%domainname% /UserD:%domainadminname% /PasswordD:%domainadminpassword% || echo 加入域失敗,請檢查網絡環境及批處理參數是否正確 && goto end
echo 加入域完成,重啟電腦後請使用域管理員帳戶登陸轉移個人配置文件!
set /p shutdown=現在要重啟嗎?y/n:
if /i "%shutdown%"=="y" shutdown /r /t 0
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::使用moveuser(USMT)工具對用戶配置文件進行遷移(提示用戶輸入要遷移的用戶和要遷移到的用戶)
:moveuser
ECHO *********************用戶配置文件遷移*************************
net user
:retry
set /p user=請輸入你要遷移的本地用戶賬戶名稱:
if /i "%user%"=="%username%" echo 轉移的用戶配置文件為當前登陸用戶,請重新啟動後使用域管理員登陸再進行轉移 && 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 你要轉移到的域賬戶尚未建立,請建立後重新嘗試遷移) && goto end

cd /d C:\Domain_Migration\USMT\USMT10.0\amd64
echo 正在備份個人配置文件,請耐心等候......
scanstate \\fileserver\migration\%computername%-%user% /c /i:miguser.xml /i:migapp.xml /v:13 /ue:*\* /ui:%computername%\%user% /l:scan.log /localonly /o /efs:copyraw
echo 正在轉移個人配置文件,請耐心等候......
loadstate \\fileserver\migration\%computername%-%user% /mu:%computername%\%user%:%domainname%\%domainuser% /i:miguser.xml /i:migapp.xml /v:13
echo 將域賬號加入本地PowerUser群組
net localgroup administrators %domainname%\%domainuser% /delete
net localgroup "Power Users" %domainname%\%domainuser% /add
echo 刪除臨時文件
del "%windir%\system32\netdom.exe"
del "%windir%\system32\zh-CN\netdom.exe.mui"
del "%windir%\system32\en-US\netdom.exe.mui"
echo 配置文件遷移成功,請註銷後使用您的域賬號登陸
set /p logoff=現在要註銷嗎?y/n:
if /i "%logoff%"=="y" logoff
goto end
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::結束退出
:end
pause>nul
exit
需要說明下,腳本中的\\fileserver\migration 這個路徑請自行修改為自己文件服務器的路徑,或者是域內某臺計算機的共享目錄,請開放所有人權限everyone。

關於netdom工具獲取,可以利用這個工具生成。

路徑:http://bbs.51cto.com/thread-1509122-1.html

一切都已經完成,直接執行Auto.bat腳本,根據系統選擇。已經完成在Win7和Win10 version 1803系統上的測試。正常遷移。其他系統一樣的操作,腳本直接修改。xp系統需要更換下SID,可以直接利用工具更換。

操作步驟:

使用說明

1、將Domain_Migration文件夾複製到C盤根目錄

2、以管理員身份運行 Auto.bat

3、如果是XP系統,第一步建議先重置系統SID,更改計算機名和系統SID後重啟(win7和win10可跳過此步);重啟後再次運行Auto.bat

4、選擇系統類型,按照提示操作,更改計算機名後必須重啟,再次運行Auto.bat加域

5、加域後重啟,使用臨時域管理員登陸,再次運行Auto.bat轉移用戶配置文件轉移完成後,註銷,使用個人的域賬號登陸

6、刪除Domain_Migration文件夾

一切完成操作,有什麼需要的可以直接私信給我,如果覺得工具太麻煩,可以分享、轉發、私信回覆,我直接分享給你。

如何自動加域及遷移用戶配置文件呢?

域自動加入和數據遷移工具集


分享到:


相關文章: