使用autoit实现自动加域

#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#AutoIt3Wrapper_Icon=C:\Users\helpdesk07\Desktop\autoit脚本\fuwuqi.ico
#AutoIt3Wrapper_OutFile_x64=成品脚本\jiayuv2.exe
#AutoIt3Wrapper_Res_Comment=不重起自动修改计算机名,加网域
#AutoIt3Wrapper_Res_LegalCopyright=孙超
#AutoIt3Wrapper_Res_Language=2052
#AutoIt3Wrapper_Res_requestedExecutionLevel=None
#EndRegion ;**** 由 AccAu3Wrapper_GUI 创建指令 ****
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <GUIConstants.au3>
#include <GUIConstantsEx.au3>
#include <EditConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Opt("GUICoordMode",1)
Opt("TrayIconHide",1)
#CS 旧代码注释
$gui=GUICreate("加域-XX",300,200,300,300)
$computer=GUICtrlCreateLabel("电脑名:",20,20,50)
$computer_text=GUICtrlCreateInput("",75,20,200)
$user=GUICtrlCreateLabel("用户名:",20,50,50)
$user_text=GUICtrlCreateInput("domain\sunchao",75,50,200)
$pwd=GUICtrlCreateLabel("密码:",20,80,50)
$pwd_text=GUICtrlCreateInput("apassword",75,80,200,"",$ES_PASSWORD)
$domain_name=GUICtrlCreateLabel("域:",20,110,50)
$domain_text=GUICtrlCreateInput("www.domain.com",75,110,200)
$ou=GUICtrlCreateLabel("OU:",20,140,50)
$ou_text=GUICtrlCreateInput("ou=computers,dc=domain,dc=com",75,140,200)
$ok=GUICtrlCreateButton("确  定",80,175,80)
$cancel=GUICtrlCreateButton("取  消",195,175,80)
GUISetState(@SW_SHOW)
#ce

#Region ### START Koda GUI section ### Form=D:\文档\au3script\加域v2.kxf
$Form2 = GUICreate("加域-XX-v2.0", 494, 362, 205, 137)
$computer = GUICtrlCreateLabel("电脑名", 51, 27, 48, 17)
$computer_text = GUICtrlCreateInput("", 106, 25, 193, 21)
$asuse = GUICtrlCreateLabel("目标用户名", 27, 65, 64, 17)
$asuser_text = GUICtrlCreateInput("", 107, 62, 193, 21)
$user = GUICtrlCreateLabel("工程师用户名", 17, 102, 76, 17)
$user_text = GUICtrlCreateInput("", 107, 101, 193, 21)
$pwd = GUICtrlCreateLabel("工程师密码", 26, 139, 64, 17)
$pwd_text = GUICtrlCreateInput("", 106, 136, 193, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
$domain_name = GUICtrlCreateLabel("域", 46, 179, 16, 17)
$domain_text = GUICtrlCreateInput("", 106, 176, 193, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
$ou = GUICtrlCreateLabel("OU", 44, 220, 20, 17)
$ou_text = GUICtrlCreateInput("", 106, 217, 193, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_PASSWORD))
$ok = GUICtrlCreateButton("确定", 45, 276, 91, 30)
$cancel = GUICtrlCreateButton("取消", 211, 276, 91, 30)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetData($computer_text,getOldCName())
While 1
        Local $msg=GUIGetMsg()
        Local $result
        Select
                Case $msg=$ok
                        Local $computer_r=GUICtrlRead($computer_text)
                        Local $user_r=GUICtrlRead($user_text)
                        Local $password_r=GUICtrlRead($pwd_text)
                        Local $domain_r=GUICtrlRead($domain_text)
                        Local $ou_r=GUICtrlRead($ou_text)
						Local $asuser_r=GUICtrlRead($asuser_text)
                        WinSetState("加域-XX","",@SW_HIDE)
                        ProgressOn("加域-XX","检查必要文件是否存在","","400","350",2)
                        If Not(FileExists(@SystemDir&"\dsquery.exe") And FileExists(@SystemDir&"\netdom.exe") And FileExists(@SystemDir&"\dsquery.dll")) Then
                                MsgBox(4096,"提示","请复制dsquery.exe、netdom.exe、dsquery.dll到system32文件夹")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        ProgressSet(10,"","检查是否填写完整")
                        If $computer_r="" Or $user_r="" Or $password_r="" Or $domain_r="" Then
                                MsgBox(4096,"提示","请填写完整!")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        ProgressSet(20,"","检查计算机名是否符合规则")
            If Not nameIsRorE($computer_r) Then
                MsgBox(4096,"提示","计算机名不符合规则,只能由字母数字和连字符组成,不能超过15个字符,且不能全为数字!")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                ContinueLoop
                        EndIf
                        ProgressSet(30,"","建立到网域的连接")
                        If Not Ping_domain($domain_r) Then
                                MsgBox(4096,"提示","不能联系到域"&$domain_r&"请检查网络配置!")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        ProgressSet(40,"","检查是否已经加入网域")
                        If Not isGorD() Then
                                MsgBox(4096,"提示","你已经是域成员!")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        ProgressSet(50,"","验证用户名和密码是否正确")
                        If Not E_UandP($domain_r,$user_r,$password_r) Then
                                MsgBox(4096,"提示","用户名或密码错误!")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        ProgressSet(60,"","检查计算机名是否已经在域中使用")
                        If userExists($computer_r,$domain_r,$user_r,$password_r) Then
                                MsgBox(4096,"提示","该计算机名已经在域中使用!")
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        ProgressSet(70,"","正在加入网域")
                        If StringUpper($computer_r)==StringUpper(getOldCName()) Then
                                $alert=MsgBox(1,"提示","你没有修改计算机名,确认以当前计算机名加入网域吗?")
                                If $alert>1 Then
                                    ProgressOff()
                                    WinSetState("加域-XX","",@SW_SHOW)
                                        ContinueLoop
                                EndIf
                        Else
                                ProgressSet(80,"正在修改计算机名")
                                rename($computer_r)
                        EndIf
                        ProgressSet(90,"正在加入网域")
                        $result=join($computer_r,$domain_r,$user_r,$password_r,$ou_r)
                        If $result=1 Then
								ProgressSet(95,"正在将目标用户加入到管理员组")
								If $asuser_r="" Then
									MsgBox(0,"错误","目标用户名不能为空!")
									ProgressOff()
									ContinueLoop
								Else
									joinadmin($asuser_r)
								EndIf

                                ProgressSet(100,"","完成")
                                Sleep(3000)
                                ProgressOff()
                                popup("重起","加域成功,计算机将在10秒后重起",10)
                                Shutdown(6)
                        Else
                                ProgressOff()
                                WinSetState("加域-XX","",@SW_SHOW)
                                ContinueLoop
                        EndIf
                        Exit
                Case $msg=$cancel Or $msg=$GUI_EVENT_CLOSE
                        ExitLoop
        EndSelect
WEnd
Func Ping_domain($domain) ;判断能否连接到域
        If Ping($domain) Then
                Return True
        Else
                Return False
        EndIf
EndFunc
Func getOldCName();获取旧的电脑名称
        $obj=ObjCreate("WScript.Network")
        Return $obj.ComputerName
EndFunc
Func isGorD() ;判断是否已经加入网域
        $strComputer = "."
    $objWMIService = ObjGet("winmgmts:\\" & $strComputer & "\root\cimv2")
        $collitems=$objWMIService.ExecQuery("Select * From Win32_ComputerSystem")
        For $colitem In $collitems
                Local $rule=$colitem.DomainRole
                If $rule=0 Then
                        Return True
                Else
                        Return False
                EndIf
        Next
EndFunc
Func userExists($computer_name,$domainname,$username,$password) ;判断域中是否已经存在相同的电脑名
        Local [email protected]&"\comp.txt"
    If FileExists($path) Then
           FileDelete($path)
   EndIf
    RunWait(@ComSpec&" /c dsquery computer -name "&$computer_name&" -d "&$domainname&" -u "&$username&" -p "&$password&" > "&$path,"",@SW_HIDE)
    If FileGetSize($path)>0 Then
           Return True
    Else
           Return False
    EndIf
EndFunc
Func rename($name) ;重命名电脑名
         RegWrite("HKLM\system\currentcontrolset\control\computername\computername","computername","REG_SZ",$name)
     RegWrite("HKLM\system\currentcontrolset\control\computername\ActiveComputerName","computername","REG_SZ",$name)
     RegWrite("HKLM\system\currentcontrolset\services\tcpip\parameters","nv hostname","REG_SZ",$name)
     RegWrite("HKLM\system\currentcontrolset\services\tcpip\parameters","hostname","REG_SZ",$name)
 EndFunc
 Func join($computer_name,$domain,$user,$pwd,$ou) ;加域
          Local [email protected]&"\join.txt"
          Local $str
          Local $result
          If $ou="" Then
                  $str=" /c netdom join "&$computer_name&" /domain:"&$domain&" /userD:"&$user&" /passwordd:"&$pwd &" > "&$temp
          Else
                  $str=" /c netdom join "&$computer_name&" /domain:"&$domain&" /ou:"&$ou&" /userD:"&$user&" /passwordd:"&$pwd &" > "&$temp
          EndIf
          If MsgBox(1,"确认","你确认加入网域 "&$domain &" ?")=1 Then
                  If FileExists($temp) Then
                          FileDelete($temp)
                  EndIf
                  RunWait(@ComSpec&$str,"",@SW_HIDE)
                  If FileExists($temp) Then
                          $str=FileReadLine($temp)
                          If StringLower($str)=="the command completed successfully." Then
                                  $result=1
                          Else
                                  $result=2
                                  MsgBox(4096,"提示",$str)
                          EndIf
                  EndIf
          Else
                  $result=3
          EndIf
          Return $result
  EndFunc
  Func nameIsRorE($computername) ;判断计算机名是否符合规则
          $result=StringRegExp($computername,‘^[a-zA-Z0-9-]{1,15}$‘)
          $result1=StringRegExp($computername,‘^\d{1,15}$‘)
          If $result==1 And $result1==0 Then
                  Return True
          Else
                  Return False
          EndIf
  EndFunc
  Func E_UandP($domain,$user,$pwd)  ;判断用户名和密码是否正确
          Local [email protected]&"\net.txt"
          If FileExists($path) Then
                  FileDelete($path)
          EndIf
          RunWait(@ComSpec&‘ /c net use * /del /y‘,"",@SW_HIDE)
          RunWait(@ComSpec&" /c net use \\"& $domain & "\ipc$ /user:"&$user&" "&$pwd&" > " &$path,"",@SW_HIDE)
          If FileExists($path) Then
                  If FileGetSize($path)>0 Then
                          Return True
                  Else
                          Return False
                  EndIf
          EndIf
  EndFunc
Func popup($title,$text,$second)
        Local $gui=GUICreate($title,240,60)
    GUISetState(@SW_SHOW)
    $tishi=GUICtrlCreateLabel("",10,20,200,15)
    While 1
            If $second>0 Then
           timespan($tishi,$text,$second)
                   ExitLoop
            EndIf
    WEnd
EndFunc
Func timespan($gui,$text,$time)
    While $time>0
            GUICtrlSetData($gui,$text&" "&$time)
                Sleep(1000)
                $time=$time-1
    WEnd
EndFunc

Func joinadmin($asuser)

	RunWait(@ComSpec&‘ /c net localgroup administrators aspire\‘&$asuser&‘ /add‘)

EndFunc
时间: 2024-10-15 07:24:32

使用autoit实现自动加域的相关文章

【AD】WinXP Win7x64 自动加域脚本

http://bbs.51cto.com/thread-968398-1.html 受到链接中专家的启发,以及网上的一些资料. 自己写了一个win7x64 winxp加域退域脚本.测试DC是Server2008R2. 使用方法. 以win7x64为例 将AD文件夹整个放到C盘根目录下. 内部文件 将目标BAT内的Domain,DNS和帐号密码都换成你自己的. 然后右击其中的加域,运行. 界面大致如图 根据提示一步一步操作. 退域也类似. 这个和链接中的区别是不需要先更改名再重启再加域,而是可以先

自动加域脚本

因为经常需要给公司员工电脑加域,以及其他的一些设置.一直想着做一个自动加域的批处理. 参照网上查到的各种信息,终于做成了一个适合自己的脚本. 分三个批处理win7需要以下文件1.bat ,joindomain.bat,clean.bat,  需要的程序netdom.exe netdom.exe.mui(可以在server2008系统中提取,32位和64位程序不同) 1.bat 负责修改机器名称 joindomain.bat 负责加入网域,将用户域账号加入本地组 clean.bat 负责清理脚本,

【AD】WinXP Win7x86/x64 自动加域脚本 更新20151109

注:运行修改计算机的账号必须具有管理员权限 -reboot参数我设置的5,可能会看不到echo y传递的结果,你可以设置成10. http://bbs.51cto.com/thread-968398-1.html 受到链接中专家的启发,以及网上的一些资料. 二次更新20151108这次更新主要内容是不需要放在C盘,你可以放在任何一个地方,也可以放在共享目录.并且不需要再去某个目录下选择对应操作系统的脚本,脚本会自动判断当前系统,也能判断win7是32位还是64位.附件中带了一个脚本批量替换工具,

自动加域--Script

自动加域--Script说到自动加域,我们作为一个运维管理员来说,是必须要掌握了的 ,通过脚本提高管理员的工作效率,一般可以将自动加域脚本(前提是需要将脚本加密,内部有明文账户及密码)通过共享的方式然后用户手动执行,前一段时间领导也有这个需求,所以就总了一些,分享给有需要的.一般分为两步,首先是计算更改计算机名,其次就是加域了:最后是需要将用户增加到管理员组中,保证用户有足够的权限进行操作.首先是修改计算机名:执行会提示当前的计算机名,然后输入新的计算机名,单击确认即可: Dim reval S

自动加域脚本,bat和vbs配合使用,使加域操作更简单

我的实验:编写自动加域脚本(总结)1.自动加域脚本的目的.A.减少重复繁杂的必要操作,提高工作效率.B.使加域操作更简单,更有乐趣. 2.自动加域的实现方式,分为三个步骤.A.使用bat和vbs相互配合.(因为本人编程水平不高)B.更改电脑名字.(不需要重启电脑)C.更改电脑IP地址及DSN.(选择自动获取还使手动配置)D.调用Vbs文件完成自动加域操作.(不解释为什么要调用vbs,而不直接用bat完成) 3.相关文件.A.链接:https://pan.baidu.com/s/1sZmCisS1

自动备份加域工具

大家装系统都装过很多了,公司电脑故障重装系统后都要改电脑名加域,配置磁盘权限.设置邮箱等,在重装系统请都要抄电脑名,ip地址,邮箱用户. 在系统进不去的时候,这些信息只有从其他地方获取了,都是些重复工作.基于这些,为了维护更加方便,近来我花时间开发了一个装机自动备份恢复工具,暂且叫做Jtools 吧 软件使用python语言开发,软件实现以下一些功能: *备份用户状态 *备份电脑名与IP地址 *自动恢复电脑名与加人域并设置域用户权限 *自动恢复用户状态配置 都是些实用功能,暂且只支持XP ,待有

加域报错:“TCP/IP没有安装网络协议”

检查电脑后发现问题: 1.电脑不能自动获取IP地址 2.手动设置IP地址后加域报错 估计TCP/IP协议损坏,重新安装即可解决:以下为重装TCP/IP协议方法: 1.打开注册表编辑器,删除以下两个键: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2 2.用记事本打开%winroot%\inf\nett

Active Directory管理之:客户端加域-配置文件转移

域的重要性与便利性,做为IT人员都是知道的,但公司在规划加域的时候,往往实现效果不明显,原因是在于给用户加域后,经常收到用户反馈,这个找不到,那个也找不到了,为解决此问题,以下提供一个工具的指引,能将用户之前的配置文件直接转移到新的域帐号上,希望能帮到大家.注意:此工具会自动将域帐号加入到本地管理员组.(工具地址为:http://yunpan.cn/cATsNRtPZIBwe  提取码 d3fc) 1. 运行Profwiz 2. 下一步 3. 填写域名资料与使用人帐号 4. 选择要迁移的配置文件

Windows Server 2016-Netdom Join之客户端加域(二)

上章节我们介绍了如何通过图形化界面实现用户加域操作,本章节为大家简单介绍如何通过netdom join命令实现计算机加域操作.具体信息如下: 将工作站或成员服务器加入域.将计算机加入域的行为会为域中的计算机创建一个帐户(如果该帐户尚不存在). Netdom是一个内置于Windows Server 2008和Windows Server 2008 R2中的命令行工具.如果您安装了Active Directory域服务(AD DS)服务器角色,则可以使用它.如果您安装属于远程服务器管理工具(RSAT