如何自动加域及迁移用户配置文件呢?

如何自动加域及迁移用户配置文件呢?

域加入

很多企业都有域环境,有些时候需要把一大批的人员加入到域,加域很简单,但是用户配置文件迁移比较麻烦。接下来就来说说如何用自动化的工具来实现迁移。

迁移肯定麻烦,所以索性利用脚本来实现自动化迁移,废话不多说,工具准备:

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文件夹

一切完成操作,有什么需要的可以直接私信给我,如果觉得工具太麻烦,可以分享、转发、私信回复,我直接分享给你。

如何自动加域及迁移用户配置文件呢?

域自动加入和数据迁移工具集


分享到:


相關文章: