单位最近要换一批电脑,没钱买高大上的软件,也不准用三方工具。

先写个自动设置计算机名和加域的小工具,压压惊。


功能:

完成系统设置的最后一步,改计算机名,和加入域。


工作方式:

 

半自动,中途需要手动输入计算机名。

待改进:可以通过MAC与计算机名的映射表,自动获取当前计算机名,就是全自动了!


Readme:

注意:
修改setdoman.bat,设置域名和域管理员账号和密码

1、首次运行initial-config进行配置,如果没有输入系统当前用户名和密码,系统不会自动登陆。
2、如果是母盘,选择关闭计算机,重启进入U盘备份系统
3、如果是单个电脑选择重启
4、第一次启动提示计算机名,输入计算机名
5、第二次启动加入域,脚本运行完成自动关机
6、完成

------------
ver1
增加了防止单独运行setdomain误删脚本
增加了没有修改默认domain信息会提示手动输入。


文件结构:

└─joindomain-ver1

     └─readme.txt                           # 使用方法

     └─initial-config.bat                   # 初始化设置文件

     └─start.bat                               # 开机调用的文件,通过start再调用改名和加域

     └─modifyhostname.bat           # 修改计算机名文件
     └─setdomain.bat                     # 加入域文件,还负责清理产生的临时文件

每个脚本都要以管理员身份运行,所以都需要在开头加上下面的代码

@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )


上脚本代码:

initial-config.bat 

::--------------inilazition-----------
::当前的账号和密码,重启自动进系统
set /p account-name=当前账户名:
set /p account-pw=密码:
::修改注册表,开机自动进入系统
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon /t REG_SZ /d 1 /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword /t REG_SZ /d %account-pw% /f
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName /t REG_SZ /d %account-name% /f
::复制改计算机名和加域程序到临时路径
set source=%~dp0%
set dest="C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\"
copy %source%modifyhostname.bat %temp%\modifyhostname.bat
copy %source%setdomain.bat %temp%\setdomain.bat
copy %source%start.bat %dest%"start.bat"
echo 程序初始化完成
echo 制作母盘请输入【y】,系统自动关机。
echo 单台电脑输入【n】,系统自动重启。
set /p input-type=y/n:
if %input-type%==y ( 
echo 系统正在关机,请勿操作。
shutdown /s /f /t 2
goto end
 )
echo 系统正在重启,请误操作。
shutdown /r /f /t 2

start.bat

echo IT自动化工具运行中
if not exist "%temp%\set-temp-flag.flag" (
::运行修改计算机名脚本
%temp%\modifyhostname.bat
) else (
::重启后,运行加入域脚本
%temp%\setdomain.bat
)
pause

modifyhostname.bat

rem 修改电脑名
set cmscdomain=cmsc.local
set /p computer-name=Input computer name:
wmic computersystem where "caption='%computername%'" call Rename name='%computer-name%'
echo 1>>"%temp%\set-temp-flag.flag"
echo %computer-name%修改完成!系统2秒后重启。。。
shutdown /f /r /t 2
pause


setdomain.bat

rem 此工具一闪而过,说明出错了
:: 判断标记文件是否存在,不存在则结束。
set cmscdomain=default
set domainuser=default
set userpw=default
if exist "%temp%\set-temp-flag.flag" (
echo 本名上三行不修改,提示输入域信息。
if %cmscdomain%==default ( set /p cmscdomain="Domain Name:" )
if %domainuser%==default ( set /p domainuser="User Name:" )
if %userpw%==default ( set /p userpw="Password:" )
wmic computersystem where "caption='%computername%'" call JoinDomainOrWorkgroup name="%cmscdomain%" username="%domainuser%" password="%userpw%" Fjoinoptions=1

reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoAdminLogon  /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultPassword  /f
reg delete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v DefaultUserName  /f
del "C:\Users\%username%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\start.bat"
del "%temp%\set-temp-flag.flag"
del "%~dp0%\modifyhostname.bat"

echo done,Please wait shutdown!
shutdown /s /f /t 10
del "%~dp0%\setdomain.bat"
)
echo 没有找到标记文件,请按步骤运行
pause