IT天空

 找回密码
 加入我们

手机号码,快捷登录

搜索

[求助] 求一个自动加域的脚本

[复制链接]
youngr 发表于 2018-10-22 07:49:13 | 显示全部楼层 |阅读模式

本帖最后由 youngr 于 2018-10-22 08:02 编辑

公司最近上域,为了效(tou)率(lan),想找一个自动加域的脚本,网上找了一大堆效果感觉都不是很理想(好吧,有些vb脚本我根本看不懂),有没有大神有现成的发我一份,不胜感激。
要求如下:运行时自动检测是否加域,已经加域则退出脚本,尚未加域则提示修改计算机名,并更改DNS,后自动重启(如果能不重启就可以识别修改后的计算机名那就最好了)。重启后自动接着运行脚本加域(手动也行,重要的是接着运行,之前找了一个脚本,重启又重新提示修改计算机名),加域后修改administrator密码,后自动重启。如果加域时能把之后要登录的域账户也添加进去那就更好了,省得加完域还要切换账户。
再次感谢!

最近访问 头像模式 列表模式
noender 发表于 2018-10-22 09:12:23 | 显示全部楼层

活跃 31730| 技术 11| 互助 42| 钻石 0

自动加域不太现实的吧。。你每一个终端,计算机名总是不一样的吧,还有。你加域难得都是用同一个帐户的。。只能是半自动。才有这种程序的。一个批处理。

点评

其实完全不用纠结计算机名啊,运行脚本,做个提示,让管理员自己写计算机名,然后加域时候要求输入的不都是域管理员账户跟密码吗? 就手动写一个计算机名,算是一个半自动的吧,怎么就不现实呢?  详情 回复 发表于 2018-10-26 16:58
如果说... 发表于 2018-10-22 09:32:00 | 显示全部楼层

活跃 43674| 技术 112| 互助 318| 钻石 1080

可以实现自动加域,需要在脚本中设置好域管理员账号和密码,DNS服务器地址和域的名字,具体脚本如下:
  1. @echo off

  2. color 1e

  3. cd /d C:\Domain_Migration\xp

  4. ::功能说明与使用说明注意事项

  5. ECHO 请在使用本脚本前修改相应的参数为实际值

  6. set dns1=192.168.12.5

  7. set dns2=192.168.2.3

  8. REM 请设置自己真实环境的域名、域管理员账号和密码

  9. set domainname=test.com

  10. set domainadminname=testadmin

  11. set domainadminpassword=!@@#3%%^^

  12. ::判断是否已经加入域,如果加入了则直接跳转

  13. ::wmic ntdomain get domainname | findstr /i "%domainname%

  14. ::if %errorlevel% equ 0 echo 该计算机已经加入域 && goto moveuser

  15. ipconfig /all | findstr /i "%domainname%" >nul && echo 该计算机已经加入域,准备转移配置文件 && goto moveuser



  16. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  17. ::判断当前登陆用户是否有管理员权限,如果没有则注销后重新以管理员登陆

  18. :admin

  19. ECHO ************************判断当前用户权限******************

  20. net user %username% | findstr "*Administrators"

  21. if %errorlevel% equ 1 (echo 当前用户不是本地管理员,请注销后使用有本地管理员权限的用户登录) else (goto DNS)

  22. set /p logoff=现在要注销吗

  23. if /i "%logoff%"=="y" logoff

  24. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  25. ::判断当前DNS设置是否为指定地址,如果不是,则清空当前配置后重新设置DNS

  26. :DNS

  27. ECHO *************************更改DNS****************************

  28. netsh interface ip show dns | findstr "%dns1%" 1>nul && echo DNS已经设置为%dns1% && goto renamecomputername

  29. echo 清理更改现有DNS...

  30. for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (

  31. set netname=%%j

  32. if "%%j"=="环回" goto back

  33. if "%%j"=="内部" goto back

  34. netsh interface ip delete dns name="%%j" addr=all >nul

  35. netsh interface ip add dns name="%%j" addr=%dns1% index=1 >nul

  36. netsh interface ip add dns name="%%j" addr=%dns2% index=2 >nul

  37. )

  38. :back

  39. echo DNS更改完成



  40. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  41. ::判断计算机名是否已经更改,如更改则进入下一部分;如未更改是否需要更改计算机名,更改完成后要求重新启动计算机

  42. :renamecomputername

  43. ECHO *********************更改计算机名****************************

  44. set a=%computername%

  45. echo 当前计算机名为:%a%

  46. set /p b=请输入要修改的计算机名称(跳过请输入s):

  47. if /i "%b%"=="s" goto joindomain

  48. if /i "%b%"=="" echo 计算机名不能为空 && goto renamecomputername

  49. wmic computersystem Where name="%a%" call rename "%b%" >nul

  50. if %errorlevel% equ 1 (echo 更改计算机名失败,请手工更改 && pause && exit) else (echo 计算机名已更改为%b%)

  51. set /p reboot=更改计算机名完成,现在要重起吗?y/n:

  52. if /i "%reboot%"=="y" shutdown /r /t 0

  53. goto end

  54. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  55. ::判断计算机是否已加入域,如加入域则继续下一部分;否则检查相应服务是否启动,自动加入域(用户名密码部分参数需要自行更改)

  56. :joindomain

  57. ECHO ***********************计算机加入域*************************

  58. if /i "%userdomain%"=="%domainname%" goto moveuser

  59. rem 判断服务TCP/IP NetBIOS HELPER服务是否禁用或未启动,如果禁用则更改为自动,未启动则自动启动,否则显示服务已启动

  60. sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服务未启动,正在启动服务... && sc config lmhosts start= auto && sc start lmhosts) || echo 服务已启动

  61. if /i "%userdomain%"=="%domainname%" do (echo 计算机已加入域 && goto moveuser)

  62. if not exist netdom.exe echo 请将netdom工具放到同文件夹下再尝试运行 && goto end

  63. . etdom join %computername% /Domain:%domainname% /UserD:%domainadminname% /PasswordD:%domainadminpassword% || echo 加入域失败,请检查网络环境及批处理参数是否正确 && goto end

  64. set /p shutdown=加入域完成,现在要重起吗?y/n:

  65. if /i "%shutdown%"=="y" shutdown /r /t 0

  66. goto end

  67. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  68. ::使用moveuser工具对用户配置文件进行迁移(提示用户输入要迁移的用户和要迁移到的用户)

  69. :moveuser

  70. ECHO *********************用户配置文件迁移*************************

  71. if not exist moveuser.exe echo 请将MOVEUSER工具放到同文件夹下再尝试运行 && goto end

  72. net user

  73. :retry

  74. set /p user=请输入你要迁移的本地用户账户名称:

  75. if /i "%user%"=="%username%" echo 转移的用户配置文件为当前登陆用户,请重新启动后使用域管理员登陆再进行转移 && goto end

  76. net user %user% 2>nul 1>nul || echo 你输入的本地账户不存在,请重新输入 && goto retry

  77. set /p domainuser=请输入你要迁移到的域账号名称:

  78. net user %domainuser% /domain 2>nul 1>nul

  79. if %errorlevel% neq 0 (echo 你要转移到的域账户尚未建立,请建立后重新尝试迁移) && goto end

  80. moveuser %user% %domainname%\%domainuser% /k /y | findstr /i "failed" 2>nul 1>nul && echo用户配置文件迁移失败,请检查配置 && goto end

  81. ::if %errorlevel% neq 0 echo 用户配置文件迁移失败,请检查配置 && goto end



  82. ::如果是从本机管理员用户迁移,则域用户也变成管理员,此处删除域用户管理员权限,加入PowerUsers群组,可自行更改

  83. echo 更改域用户为Power User权限

  84. net localgroup administrators %domainname%\%domainuser% /delete

  85. net localgroup "Power Users" %domainname%\%domainuser% /add

  86. echo 配置文件迁移成功,请注销后使用您的域账号登陆

  87. set /p logoff=现在要注销吗?y/n:

  88. if /i "%logoff%"=="y" logoff

  89. goto end

  90. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  91. ::结束退出

  92. :end

  93. pause>nul

  94. exit

  95. ****************************************************************

  96. REM 脚本结束



  97. 3、Win7AutoAddDomain.bat,更改计算机名,加域,迁移用户配置文件

  98. @echo off

  99. color 1e

  100. ::功能说明与使用说明注意事项

  101. ECHO 请在使用本脚本前修改相应的参数为实际值

  102. set dns1=192.168.12.5

  103. set dns2=192.168.2.3

  104. REM 请设置自己真实环境的域名、域管理员账号和密码

  105. set domainname=test.com

  106. set domainadminname=testadmin

  107. set domainadminpassword=!@@#3%%^^

  108. ::判断是否已经加入域,如果加入了则直接跳转

  109. ::wmic ntdomain get domainname | findstr /i "%domainname%

  110. ::if %errorlevel% equ 0 echo 该计算机已经加入域 && goto moveuser

  111. ipconfig /all | findstr /i "%domainname%" >nul && echo 该计算机已经加入域,准备转移配置文件 && goto moveuser

  112. :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  113. ::判断当前登陆用户是否有管理员权限,如果没有则注销后重新以管理员登陆

  114. :admin

  115. ECHO ************************判断当前用户权限******************

  116. net user %username% | findstr "*Administrators"

  117. if %errorlevel% equ 1 (echo 当前用户不是本地管理员,请注销后使用有本地管理员权限的用户登录) else (goto DNS)

  118. set /p logoff=现在要注销吗

  119. if /i "%logoff%"=="y" logoff

  120. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  121. ::判断当前DNS设置是否为指定地址,如果不是,则清空当前配置后重新设置DNS

  122. :DNS

  123. ECHO *************************更改DNS****************************

  124. netsh interface ip show dns | findstr "%dns1%" 1>nul && echo DNS已经设置为%dns1% && goto renamecomputername

  125. echo 清理更改现有DNS...

  126. for /f "skip=2 tokens=2,* " %%i in ('netsh interface show interface') do (

  127. set netname=%%j

  128. if "%%j"=="环回" goto back

  129. if "%%j"=="内部" goto back

  130. netsh interface ip delete dns name="%%j" addr=all >nul

  131. netsh interface ip add dns name="%%j" addr=%dns1% index=1 >nul

  132. netsh interface ip add dns name="%%j" addr=%dns2% index=2 >nul

  133. )

  134. :back

  135. echo DNS更改完成

  136. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  137. ::判断计算机名是否已经更改,如更改则进入下一部分;如未更改是否需要更改计算机名,更改完成后要求重新启动计算机

  138. :renamecomputername

  139. ECHO *********************更改计算机名****************************

  140. set a=%computername%

  141. echo 当前计算机名为:%a%

  142. set /p b=请输入要修改的计算机名称(跳过请输入s):

  143. if /i "%b%"=="s" goto joindomain

  144. if /i "%b%"=="" echo 计算机名不能为空 && goto renamecomputername

  145. wmic computersystem Where name="%a%" call rename "%b%" >nul

  146. if %errorlevel% equ 1 (echo 更改计算机名失败,请手工更改 && pause && exit) else (echo 计算机名已更改为%b%)

  147. set /p reboot=更改计算机名完成,现在要重起吗?y/n:

  148. if /i "%reboot%"=="y" shutdown /r /t 0

  149. goto end

  150. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  151. ::判断计算机是否已加入域,如加入域则继续下一部分;否则检查相应服务是否启动,自动加入域(用户名密码部分参数需要自行更改)

  152. :joindomain

  153. ECHO ***********************计算机加入域*************************

  154. if /i "%userdomain%"=="%domainname%" goto moveuser

  155. rem 判断服务TCP/IP NetBIOS HELPER服务是否禁用或未启动,如果禁用则更改为自动,未启动则自动启动,否则显示服务已启动

  156. sc query state= inactive | findstr /c:"TCP/IP NetBIOS" && (echo 服务未启动,正在启动服务... && sc config lmhosts start= auto && sc start lmhosts) || echo 服务已启动

  157. if /i "%userdomain%"=="%domainname%" do (echo 计算机已加入域 && goto moveuser)

  158. . etdom join %computername% /Domain:%domainname% /UserD:%domainadminname% /PasswordD:%domainadminpassword% || echo 加入域失败,请检查网络环境及批处理参数是否正确 && goto end

  159. echo 加入域完成,重启电脑后请使用域管理员帐户登陆转移个人配置文件!

  160. set /p shutdown=现在要重起吗?y/n:

  161. if /i "%shutdown%"=="y" shutdown /r /t 0

  162. goto end

  163. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  164. ::使用moveuser工具对用户配置文件进行迁移(提示用户输入要迁移的用户和要迁移到的用户)

  165. :moveuser

  166. ECHO *********************用户配置文件迁移*************************

  167. net user

  168. :retry

  169. set /p user=请输入你要迁移的本地用户账户名称:

  170. if /i "%user%"=="%username%" echo 转移的用户配置文件为当前登陆用户,请重新启动后使用域管理员登陆再进行转移 && goto end

  171. net user %user% 2>nul 1>nul || echo 你输入的本地账户不存在,请重新输入 && goto retry

  172. set /p domainuser=请输入你要迁移到的域账号名称:

  173. net user %domainuser% /domain 2>nul 1>nul

  174. if %errorlevel% neq 0 (echo 你要转移到的域账户尚未建立,请建立后重新尝试迁移) && goto end

  175. cd /d C:\Domain_Migration\USMT\x86

  176. echo 正在备份个人配置文件,请耐心等候......

  177. 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

  178. echo 正在转移个人配置文件,请耐心等候......

  179. loadstate \\fileserver\migration\%computername%-%user% /mu:%computername%\%user%:%domainname%\%domainuser% /i:miguser.xml /i:migapp.xml /v:13

  180. echo 将域账号加入本地PowerUser群组

  181. net localgroup administrators %domainname%\%domainuser% /delete

  182. net localgroup "Power Users" %domainname%\%domainuser% /add

  183. echo 删除临时文件

  184. del "%windir%\system32 etdom.exe"

  185. del "%windir%\system32\en-US etdom.exe.mui"

  186. echo 配置文件迁移成功,请注销后使用您的域账号登陆

  187. set /p logoff=现在要注销吗?y/n:

  188. if /i "%logoff%"=="y" logoff

  189. goto end

  190. ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

  191. ::结束退出

  192. :end

  193. pause>nul

  194. exit

  195. ******************************************************************

  196. REM 脚本结束
复制代码





评分

参与人数 1技术 +3 收起 理由
Skyfree + 3

查看全部评分

☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
天空是个不一样的地方,在这里:
有人品、没技术可以更快的学会技术;
有人品、有技术可以更快成为高手;
没人品、有技术等于0;
没人品、没技术尽早回火星吧
四风谷的熊猫 发表于 2018-10-22 10:50:32 | 显示全部楼层

活跃 1108| 技术 0| 互助 0| 钻石 0

一直是手动的.试试楼上大神的代码看看...

点评

不用试了,1000%失败! netdom有三个版本,没给你。 moveuser使用时机没告诉你。 skyfree老板不懂域,分乱加的。 既然你需要与桌面交互,不如根据这代码做个半自动的。 修改计算机名可以  详情 回复 发表于 2018-10-22 17:06
zpcoolfly 发表于 2018-10-22 16:48:02 | 显示全部楼层

活跃 13634| 技术 15| 互助 19| 钻石 10

如果说... 发表于 2018-10-22 09:32
可以实现自动加域,需要在脚本中设置好域管理员账号和密码,DNS服务器地址和域的名字,具体脚本如下:


...

moveuser成功率很成问题,有个锁文件夹的进程就玩完。。。。
zpcoolfly 发表于 2018-10-22 17:06:34 | 显示全部楼层

活跃 13634| 技术 15| 互助 19| 钻石 10

四风谷的熊猫 发表于 2018-10-22 10:50
一直是手动的.试试楼上大神的代码看看...

不用试了,1000%失败!

netdom有三个版本,没给你。
moveuser使用时机没告诉你。
skyfree老板不懂域,分乱加的。

既然你需要与桌面交互,不如根据这代码做个半自动的。
修改计算机名可以是一步,
自动修改DNS加域是一步
加完后进管理做配置文件迁移是一步。
noender 发表于 2018-10-23 08:27:51 | 显示全部楼层

活跃 31730| 技术 11| 互助 42| 钻石 0

如果说... 发表于 2018-10-22 09:32
可以实现自动加域,需要在脚本中设置好域管理员账号和密码,DNS服务器地址和域的名字,具体脚本如下:


...

哪每一台计算机名,规范取名的话,哪就不可能自动的呀。。。还有如果每一个人都 是独立的帐户的情况下。这个怎么实现自动。还不是要人为去输入的。,,自动最多就是域服务器的地址。可以提前弄好。其它好像不行吧。
noender 发表于 2018-10-23 08:30:15 | 显示全部楼层

活跃 31730| 技术 11| 互助 42| 钻石 0

zpcoolfly 发表于 2018-10-22 17:06
不用试了,1000%失败!

netdom有三个版本,没给你。

说的没有错的哟,,,我记得。加域的话。首先计算机名就是一个问题,这个计算机名。本身如果是取名规范有要求的话,哪怎么自动呢。。还有。这个名字更改过后。是一定要重启的,不然加域后。名字是不行的。。
四风谷的熊猫 发表于 2018-10-23 11:44:56 | 显示全部楼层

活跃 1108| 技术 0| 互助 0| 钻石 0

zpcoolfly 发表于 2018-10-22 17:06
不用试了,1000%失败!

netdom有三个版本,没给你。

里面有部分可以自动,因为我现在工作环境下,所有PC都是统一前缀,后缀不同.
用CDM的话倒是可以直接添加账户,直接在Administrator下面用域管理员权限即可.
主要是没法自动识别计算机名的话还是要手动,管理配置这部分也是硬伤.

zpcoolfly 发表于 2018-10-23 12:44:48 | 显示全部楼层

活跃 13634| 技术 15| 互助 19| 钻石 10

noender 发表于 2018-10-23 08:30
说的没有错的哟,,,我记得。加域的话。首先计算机名就是一个问题,这个计算机名。本身如果是取名规范有 ...

所谓的三步,就是要重启三次啊
zpcoolfly 发表于 2018-10-23 12:45:35 | 显示全部楼层

活跃 13634| 技术 15| 互助 19| 钻石 10

四风谷的熊猫 发表于 2018-10-23 11:44
里面有部分可以自动,因为我现在工作环境下,所有PC都是统一前缀,后缀不同.
用CDM的话倒是可以直接添加账 ...

预先建立计算机帐号放指定OU啊
noender 发表于 2018-10-23 16:25:39 | 显示全部楼层

活跃 31730| 技术 11| 互助 42| 钻石 0

四风谷的熊猫 发表于 2018-10-23 11:44
里面有部分可以自动,因为我现在工作环境下,所有PC都是统一前缀,后缀不同.
用CDM的话倒是可以直接添加账 ...

没有错哟。。现在只能是半自动。就是更改了计算机后。重新启动一下电脑,然后就是可以直接加入。但是在加的过程中。。还是有一部需要自个输入帐户才行。就是自个的帐户。。所以自动不了。。
noender 发表于 2018-10-23 16:26:29 | 显示全部楼层

活跃 31730| 技术 11| 互助 42| 钻石 0

zpcoolfly 发表于 2018-10-23 12:45
预先建立计算机帐号放指定OU啊

但是每一个人的计算机名是不同的,,帐户也是不同的。这个怎么办呢。。还是自动不了的哟。。要达到楼主的要求不太可能的。
zpcoolfly 发表于 2018-10-23 21:21:38 | 显示全部楼层

活跃 13634| 技术 15| 互助 19| 钻石 10

noender 发表于 2018-10-23 16:25
没有错哟。。现在只能是半自动。就是更改了计算机后。重新启动一下电脑,然后就是可以直接加入。但是在加 ...

加的过程中不需要先加目标账户

数据迁移的时候可以一并处理好

如果新装的系统,那需要。
哈哈豆1235 发表于 2018-10-26 16:58:09 | 显示全部楼层

活跃 669| 技术 0| 互助 0| 钻石 0

noender 发表于 2018-10-22 09:12
自动加域不太现实的吧。。你每一个终端,计算机名总是不一样的吧,还有。你加域难得都是用同一个帐户的。。 ...

其实完全不用纠结计算机名啊,运行脚本,做个提示,让管理员自己写计算机名,然后加域时候要求输入的不都是域管理员账户跟密码吗?     就手动写一个计算机名,算是一个半自动的吧,怎么就不现实呢?

点评

计算机名每一个人规范取名的话。就不现实了,实现不了。人名都是不一样的。如果是按着序号推有可能,但是你改过计算机名不也要重启才可以生效的吗。哪这个就达不到自动了。自动。就是一键下去一切OK呀。所以我在想。  详情 回复 发表于 2018-10-26 17:20
noender 发表于 2018-10-26 17:20:30 | 显示全部楼层

活跃 31730| 技术 11| 互助 42| 钻石 0

哈哈豆1235 发表于 2018-10-26 16:58
其实完全不用纠结计算机名啊,运行脚本,做个提示,让管理员自己写计算机名,然后加域时候要求输入的不都 ...

计算机名每一个人规范取名的话。就不现实了,实现不了。人名都是不一样的。如果是按着序号推有可能,但是你改过计算机名不也要重启才可以生效的吗。哪这个就达不到自动了。自动。就是一键下去一切OK呀。所以我在想。只能是半自动。因为我这边也想自动。结果N年了。都是半自动。哈。
您需要登录后才可以回帖 登录 | 加入我们

本版积分规则

youngr

3940

活跃

0

技术

1

互助
签到任务
最火的业界新闻
  • 我们何时能用上5G手机?
  • 使用USB-C移动电源充新款iPad Pro时请注意
  • Intel下代Xeon:28核心先行 明年上半年全部
  • 小米、一汽轿车达成战略合作:小爱同学进驻
  • 华为已自研64核ARM处理器:SPEC性能堪比28
  • 联想全新机械键盘曝光:居然是正方形的
  • 中国联通兵王卡套餐上线:29元/月 包含40G
  • 英特尔14nm产能还要继续缺货 Q4季度DIY处理
  • 外媒实测:华为Mate 20登顶2018旗舰机续航
  • 除了QWERTY,你还见过哪些奇怪的键盘布局?
炫酷的硬件Show
  • 振华SUPER FLOWER 铜皇450W 铜牌电源
  • 比小更小,Mini-STX装机
  • 华擎X99E-ITX + 银欣ML06 装机记
  • 最强双路泰坦硬管水冷 制作流程
  • 银欣FT02,双路E5工作站
  • 迟到的定制机箱小钢炮清理灰尘
  • 乔思伯UMX1 Plus,小巧的家用综合主机
  • 分体水冷第二弹-Inwin 805 infinity
  • 第一次DIY硬管水冷~~
  • 樱桃MX6.0 青轴 机械键盘 开箱
有趣的美图分享
  • 为什么没人去四川偷熊猫?
  • 没想到竟能长成这样
  • 狠!
  • 陪娃写作业
  • 猫撅屁股都是一样的
  • 回家后
  • 萌萌的毒液
  • 双十一前后
  • 推主的爱犬去世后,主人的朋友用以前刷毛时
  • 胃病爱找七种人
关注官方微信
快速回复 返回顶部 返回列表