04
2023
09
23:13:45

Windows借助脚本实现自动化加域*



推荐点击下面图片,通过本站淘宝优惠价购买:

image.png

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


  1. Dim reval
  2. Set objnet = CreateObject ("WScript.Network")
  3. Set R = CreateObject("WScript.Shell")
  4. reval = InputBox ("Your ComputerName is:" & objnet.ComputerName,"Input Your new ComputerName")
  5. On Error Resume Next
  6. strComputer = "."
  7. Set objWMIService = GetObject("winmgmts:" _
  8. & "{impersonationLevel=impersonate}!\\" _
  9. & strComputer & "\root\cimv2")
  10. Set colComputers = objWMIService.ExecQuery _
  11. ("Select * from Win32_ComputerSystem")
  12. For Each objComputer in colComputers
  13. errReturn = ObjComputer.Rename (reval)
  14. If reval <> "" Then
  15. return=MsgBox ("Reboot Computer?",vbokcancel+vbexclamation,"tips!")
  16. If return=vbok Then
  17. R.run("Shutdown.exe -r -t 0")
  18. End if
  19. End If
  20. 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



https://gaowenlong.blog.csdn.net/article/details/128705804

本文链接:http://www.hqyman.cn/post/4372.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:





休息一下,本站随机推荐观看栏目:


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

您的IP地址是: