将自动加域脚本添加到Windows任务计划程序

为节省在域控环境下新增计算机加域所需的时间,所以在Windows系统中可以添加自动加域脚本到任务计划程序中去,以实现开机自动加域功能。

脚本:

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

::设置域控名称(cdjh-test.com)和名称规则(Test-XX)
::域控规则,如cdjh-test.com,则domain_rule为cdjh-test,domain_name为cdjh-test.com
set domain_rule=csdn-test
set domain_name=csdn-test.com
::计算机命名规则,如Test-031则rule_name为Test
set rule_name=Test
::设置kms的激活地址
set kms_adress=kms地址
::网络监测最大化
if "%1%"=="max" goto check_internet
start "" /max "%~nx0" max
exit

::判断网络是否正常
:check_internet
ping %domain_name%  &&  goto check_computername
::mode con cols=800 lines=800
for /L %%i in (0,1,9) do color %%iA && timeout /T 1 >nul 2>nul
goto check_internet


::判断是否需要改名
:check_computername
echo %computername% | findstr /i "%rule_name%" >nul  && echo 命名正常 && goto check_joindomain
echo  命名异常
goto recomputername

:check_joindomain
echo 开始检查加域
wmic ntdomain get domainname | findstr /i "%domain_rule%"  && exit
echo 加域异常
goto joindomain


::更改计算机名称
:recomputername
echo 更改计算机名称
color 0A
mode con cols=45 lines=8
echo.
echo ****************更改计算机名称***************
echo.
echo.
::激活计算机,skms后边儿跟自己的激活服务器地址
slmgr /skms %kms_adress% //B
slmgr /ato //B

::激活office2019(按需取消注释)
rem cd "C:\Program Files (x86)\Microsoft Office\Office16"
rem cscript ospp.vbs /sethst:%kms_adress%
rem cscript ospp.vbs /act >nul

set /p xx=请输入计算机名后缀:
set name=%rule_name%-%xx%
reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\ShellNoRoam" /v @ /t REG_SZ /d "%name%" /f >nul 
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f >nul 
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f >nul
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Eventlog" /v "ComputerName" /t REG_SZ /d "%name%" /f >nul 
reg add "HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f >nul 
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%name%" /f >nul 
reg add "HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%name%" /f >nul
IF %ERRORLEVEL%==0 ( shutdown /r /t 0 && goto joindomain ) else (
    set /p xz=改名失败,是否重试?(Y/N)
    if /i "%xz%" == "y" goto recomputername else ( echo "更改计算机名称失败" && exit )  )
goto joindomain


::加域操作
:joindomain
sc config LmHosts start= AUTO
net start "TCP/IP NetBIOS Helper"
sc config Browser start= AUTO
net start "computer Browser"
sc config winmgmt start= AUTO
net start "Windows Management Instrumentation"
sc config LanmanServer start= AUTO
sc config LanmanServer start= AUTO
net start "Server"
sc config LanmanWorkstation start= AUTO
net start "Workstation"
cls
echo 加域中,请勿退出!
.\joindomain.vbe "%domain_name%"         ::需注意自己创建vbe文件的名称
pause

自动加域需在域控有一个拥有加域权限的账号,在vbs脚本中添加该账号的账号及密码:

On Error Resume Next
dim domain
set domain =createobject("wscript.shell")
Const JOIN_DOMAIN = 1
Const ACCT_CREATE = 2
Const ACCT_DELETE = 4
Const WIN9X_UPGRADE = 16
Const DOMAIN_JOIN_IF_JOINED = 32
Const JOIN_UNSECURE = 64
Const MACHINE_PASSWORD_PASSED = 128
Const DEFERRED_SPN_SET = 256
Const INSTALL_INVOCATION = 262144
'Domain Name
strDomain =WScript.Arguments(0)
'administrator member password
strPassword ="CSDN@123"        ::域控内拥有加域权限的账号密码
'administrator member
strUser ="JiaYu"        ::域控内拥有加域权限的账号
Set objNetwork =CreateObject("WScript.Network")
strComputer = objNetwork.ComputerName
Set objComputer = GetObject("winmgmts:{impersonationLevel=Impersonate}!\\"& _
strComputer &"\root\cimv2:Win32_ComputerSystem.Name='" & _
strComputer & "'")
ReturnValue =objComputer.JoinDomainOrWorkGroup(strDomain, _
strPassword, strDomain & "\"& strUser, NULL, _
JOIN_DOMAIN + ACCT_CREATE)
'加入域后,必须重启计算机
Set objShell=CreateObject("Wscript.Shell")
objshell.run("cmd.exe /k net user admin Aqck@exit ")         ::更改本账户密码
objshell.run("Shutdown.exe -r -t 0")

 另外出于安全考虑,需对VBS脚本进行加密。VBS加密脚本使用方法:将VBS脚本拖入VBS加密脚本上后会新增一个相同名称的脚本,脚本后缀.vbe,该后缀为.vbe的脚本就是加密后的VBS脚本。以下是VBS加密脚本:

Option Explicit

dim oEncoder, oFilesToEncode, file, sDest
dim sFileOut, oFile, oEncFile, oFSO, i
dim oStream, sSourceFile

set oFilesToEncode = WScript.Arguments
set oEncoder = CreateObject("Scripting.Encoder")

For i = 0 to oFilesToEncode.Count - 1
    set oFSO = CreateObject("Scripting.FileSystemObject")
    file = oFilesToEncode(i)
    set oFile = oFSO.GetFile(file)
    Set oStream = oFile.OpenAsTextStream(1)
    sSourceFile=oStream.ReadAll
    oStream.Close
    sDest = oEncoder.EncodeScriptFile(".vbs",sSourceFile,0,"")
    sFileOut = Left(file, Len(file) - 3) & "vbe"
    Set oEncFile = oFSO.CreateTextFile(sFileOut)
    oEncFile.Write sDest
    oEncFile.Close
Next

 脚本部分已完成编写,现在将脚本添加到任务计划程序中

1、鼠标右击“此电脑”-“管理”

2、点击"系统工具"-“任务计划程序”-“任务计划程序库”

3、鼠标右击“任务计划程序库”-“创建基本任务”

创建基本任务名称:你想实现什么功能,就写什么名称。然后点击“下一步”

触发器:因为新增电脑加域要登录本地账号进行加域操作,所以这里选择“当前用户登录时”,然后点击“下一步”

操作:选择“启动程序”,然后点击“下一步”

 启动程序:程序或脚本要选择bat脚本,且注意bat脚本需和加密后的vbs脚本放在同一目录下,然后点击“下一步”

 核对配置信息,无问题后点击“完成”

这样就可以在“任务计划程序库”中看到刚刚添加的任务计划程序了

然后就是重启电脑测试电脑加域脚本是否生效,如果加域出现问题请仔细阅读加域脚本,调整必要参数后重试。

  • 6
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值