自动加域--Script

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

Dim reval
Set objnet = CreateObject ("WScript.Network")
Set R = CreateObject("WScript.Shell")
reval = InputBox ("Your ComputerName is:" & objnet.ComputerName,"Input Your new ComputerName")
On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" _
    & strComputer & "\root\cimv2")
Set colComputers = objWMIService.ExecQuery _
    ("Select * from Win32_ComputerSystem")

For Each objComputer in colComputers
    errReturn = ObjComputer.Rename (reval)
    If reval <> "" Then
                return=MsgBox ("Reboot Computer?",vbokcancel+vbexclamation,"tips!")
                If return=vbok Then
                        R.run("Shutdown.exe -r -t 0")
                End if
    End If
Next

修改计算机名后,然后就是加域:

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 = "ixmsoft.com"
‘administrator member password
strPassword = "123"
‘administrator member
strUser = "gavin"
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)
wscript.echo "Join Domain Success!"

最后就是将用户增加到管理员组中;

dmain_user="ixmsoft\zhangsan"
Set objShell=wscript.createObject("wscript.shell")
objshell.Run "net localgroup Administrators " & domain_user & " /add",0,true

以上脚本需要执行三次,但是比较麻烦,我们最终将三个脚本的功能合成一个,
执行后,会提示修改计算机名,然后提交后,系统会重启,重启后,会将计算机自动加域。

On Error Resume Next
Err.Clear
Set oWsh = CreateObject("WScript.Shell")
sRegValue = oWsh.RegRead("HKLM\Software\Microsoft\Windows\CurrentVersion\Run\rr.vbs")
If sRegValue = "" Then
    Dim reval_all
    Set objnet = CreateObject ("WScript.Network")
    Set R = CreateObject("WScript.Shell")
    reval_all = InputBox ("当前计算机名称:" & objnet.ComputerName & chr(10)&chr(13) & "当前登录名:" & objnet.username & chr(10)&chr(13)  &"请输入新的计算机名和登录账户,用”,“分开.(例子:zhangsan-pc,zhangsan)"  & chr(10)&chr(13) & "注:登陆账户为登陆此计算机的域账户。" ,"请输入计算名和登录名")

    arr1 = split(reval_all,",")
    reval = arr1(0)
    On Error Resume Next
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
        & "{impersonationLevel=impersonate}!\\" _
        & strComputer & "\root\cimv2")
    Set colComputers = objWMIService.ExecQuery _
        ("Select * from Win32_ComputerSystem")

    For Each objComputer in colComputers
        errReturn = ObjComputer.Rename (reval)
        If reval <> "" Then
            Dim AutoRunProgram
    Set AutoRunProgram = WScript.CreateObject("WScript.shell")
    RegPath ="HKLM\Software\Microsoft\Windows\CurrentVersion\Run\"
    Type_Name = "REG_SZ"
    Key_Name = "rr.vbs"
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Set colItems = objWMIService.ExecQuery("Select * From Win32_Process Where Name = ‘wscript.exe‘ OR Name = ‘cscript.exe‘")
    For Each objItem in colItems
        lmq= objItem.CommandLine
        lmq= replace(lmq,Chr(34),",")
        arr = split(lmq,",")
    Next
    Key_data = arr(3)
    AutorunProgram.RegWrite regpath&Key_Name,Key_data,Type_Name
    AutorunProgram.RegWrite "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\loginName",arr1(1),Type_Name
                    return=MsgBox ("Please Reboot Computer?",vbokcancel+vbexclamation,"tips!")
                    If return=vbok Then
                            R.run("Shutdown.exe -r -t 0")
                    End if
        End If
    Next
End If
if sRegValue <> "" then
    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 = "ixmsoft.com"
    ‘administrator member password
    strPassword = "Bey0d101"
    ‘administrator member
    strUser = "addtodomain"
    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)
       dim wsh
    set wsh=wscript.createobject("wscript.shell")
    wsh.regdelete "HKLM\Software\Microsoft\Windows\CurrentVersion\Run\rr.vbs"
    wscript.echo "Join Domain Success!" 

    Dim oWshNetwork
    Set oWshNetwork = WScript.CreateObject("WScript.Network")

    strComputer = oWshNetwork.ComputerName
    sFlag=0
    On Error Resume Next
    ‘Set colGroups = GetObject("WinNT://" & strComputer & "/Administrators")

    ‘For Each objUser In colGroups.Members

    ‘Next

    strTestString = "/" & strComputer & "/"

    Set colGroups = GetObject("WinNT://" & strComputer & "/Administrators")

    For Each objUser In colGroups.Members
        If InStr(objUser.AdsPath, strTestString) Then
            ‘Wscript.Echo "Local user: " & objUser.Name
        ‘msgbox(objUser.ADsPath)
        Else
            IF objuser.Name = "DomainUser" Then
               sFlag=1                       

            end if 

        End If
    Next
    if sFlag=0 then 

    ‘Set objGroup = GetObject("WinNT://" & strComputer & "/Administrators")
    ‘
    Set oWsh = CreateObject("WScript.Shell")
    reval = oWsh.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\loginName")
        wsh.regdelete "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\loginName"

            adspath = "WinNT://ixmsoft/" & reval
            ‘msgbox(adspath)
            Set objUser = GetObject(adspath)
            colGroups.Add(objUser.ADsPath)
    end if
        wscript.echo  "Added Finish"

end if

原文地址:http://blog.51cto.com/gaowenlong/2066290

时间: 2024-08-10 07:13:17

自动加域--Script的相关文章

【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位.附件中带了一个脚本批量替换工具,

自动加域脚本,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

使用autoit实现自动加域

#Region ;**** 由 AccAu3Wrapper_GUI 创建指令 **** #AutoIt3Wrapper_Icon=C:\Users\helpdesk07\Desktop\autoit脚本\fuwuqi.ico #AutoIt3Wrapper_OutFile_x64=成品脚本\jiayuv2.exe #AutoIt3Wrapper_Res_Comment=不重起自动修改计算机名,加网域 #AutoIt3Wrapper_Res_LegalCopyright=孙超 #AutoIt3Wr

自动备份加域工具

大家装系统都装过很多了,公司电脑故障重装系统后都要改电脑名加域,配置磁盘权限.设置邮箱等,在重装系统请都要抄电脑名,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

AngularJS ng-app的自动加载与属性值

ng-app 指令用于告诉 AngularJS 应用当前这个元素是根元素,所有 AngularJS 应用都必须要要一个根元素. 使用ng-app来标记一个DOM结点,在网页加载完毕时会自动引导(自动初始化)应用程序. ng-app可以带属性值,可以指定加载应用模块的名称,ng-app="模块名称". 但是HTML文档中只允许有一个 ng-app 指令,如果有多个 ng-app 指令,则只有第一个会被使用. 所以想要实现自动加载,那么就不能让ng-app带有属性值,即不能指定载入应用模块

jquery scroll 自动加载内容

当拖动滚动条时,自动加载内容 </pre><pre name="code" class="javascript">1. 首先计算li的总数 </pre><pre code_snippet_id="683281" snippet_file_name="blog_20150603_5_4812406" name="code" class="javascript