Quản trị windows server 2003 với VBScript

I. GIỚI THIỆU :

– Hầu như admin nào cũng dùng Visual Basic Script (VBScript) để viết kịch bản quản trị Windows (Windows admin script). VBScript không chỉ là một ngôn ngữ mạnh mà cú pháp của nó còn khá đơn giản để học và làm.

– VBScript có thể dùng chung với Windows Management Instrumentation (WMI) và Active Directory Services Interfaces (ADSI) để viết kịch bản cho bất kỳ khía cạnh nào của một hệ thống chạy hệ điều hành Windows hay một mạng dùng Active Directory.

– Chúng ta tìm hiều về Windows scripting bằng cách dùng VBScript với WMI để thực hiện một điều sẽ rất hữu ích: thay đổi địa chỉ IP của một network adapter.

– Ta có thể thực hiện điều này bằng cách mở Network Connections trong Control Panel và kích phải chuột lên Local Area Connections, chọn Properties > Internet Protocol (TCP/IP) trên tab General và bấm chọn Properties, nhập địa chỉ IP mới rồi ấn OK hai lần. Đây là cách thực hiện phổ biến nhưng nghe qua đã thấy khá dài dòng và mệt mỏi.

– Với những chuyên gia, họ thích sử dụng Command Promt hơn, lệnh dùng ở đây là Netsh. Song, khi sử dụng lệnh này ta cần cẩn trọng vì nó có nhiều ngữ cảnh, lệnh và tham số khác nhau rất khó nhớ. Thực hiện sai một thao tác cũng có thể dẫn đến hậu quả nghiêm trọng. Nếu chưa thực sự chắc chắn, hãy nhờ sự giúp đỡ của VBScipt.

– Ta có thể vào địa chỉ sau để tìm các đoạn scipt :

http://www.microsoft.com/technet/scriptcenter/scripts/default.mspx?mfr=true

II. TÌM HIỂU VỀ SCRIPT :

– Để quản lý Windows bằng VBScipt, ta gõ lệnh và lưu dưới dạng ten_scipt.vbs

– Để chạy VBScipt, ta vào command promt, gõ lệnh : cscript ten_scipt.vbs

1. Change Password:

Set objUser = GetObject _
(“LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com”)
objUser.ChangePassword “i5A2sj*!”, “jl3R86df”

2. Tạo 1000 user:

Set objRootDSE = GetObject(“LDAP://rootDSE”)
Set objContainer = GetObject(“LDAP://cn=Users,” & _
objRootDSE.Get(“defaultNamingContext”))

For i = 1 To 1000
Set objLeaf = objContainer.Create(“User”, “cn=UserNo” & i)
objLeaf.Put “sAMAccountName”, “UserNo” & i
objLeaf.SetInfo
Next
WScript.Echo “1000 Users created.”

3. Tắt tùy chọn: the User Cannot Change Password

Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6
Const CHANGE_PASSWORD_GUID = _
“{ab721a53-1e2f-11d0-9819-00aa0040529b}”

Set objUser = GetObject _
(“LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com”)
Set objSD = objUser.Get(“nTSecurityDescriptor”)
Set objDACL = objSD.DiscretionaryAcl
arrTrustees = Array(“nt authority\self”, “everyone”)

For Each strTrustee In arrTrustees
For Each ace In objDACL
If(LCase(ace.Trustee) = strTrustee) Then
If((ace.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT) And _
(LCase(ace.ObjectType) = CHANGE_PASSWORD_GUID)) Then
objDACL.RemoveAce ace
End If
End If
Next
Next

objUser.Put “nTSecurityDescriptor”, objSD
objUser.SetInfo

4. Đổi đường dẫn User Profile:

Set objUser = GetObject _
(“LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com”)

objUser.GetInfoEx Array(“profilePath”), 0
strCurrentProfilePath = objUser.Get(“profilePath”)

intStringLen = Len(strCurrentProfilePath)
intStringRemains = intStringLen – 11
strRemains = Mid(strCurrentProfilePath, 12, intStringRemains)
strNewProfilePath = “\\fabrikam” & strRemains

objUser.Put “profilePath”, strNewProfilePath
objUser.SetInfo

5. Unlock User:

Set objUser = GetObject _
(“LDAP://cn=myerken,ou=management,dc=fabrikam,dc=com”)
objUser.IsAccountLocked = False
objUser.SetInfo

6. Gán IP:

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:\\” & strComputer & “\root\cimv2”)
Set colNetAdapters = objWMIService.ExecQuery _
(“Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE”)
strIPAddress = Array(“192.168.1.141”)
strSubnetMask = Array(“255.255.255.0”)
strGateway = Array(“192.168.1.100”)
strGatewayMetric = Array(1)
For Each objNetAdapter in colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, strSubnetMask)
errGateways = objNetAdapter.SetGateways(strGateway, strGatewaymetric)
If errEnable = 0 Then
WScript.Echo “The IP address has been changed.”
Else
WScript.Echo “The IP address could not be changed.”
End If
Next

7. Chuyển Service sang Manual/Auto/Disable:

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)
Set colServiceList = objWMIService.ExecQuery _
(“Select * from Win32_Service where StartMode = ‘Manual'”)
For Each objService in colServiceList
errReturnCode = objService.Change( , , , , “Disabled”)
Next

8. Start Service:

strComputer = “.”
Set objWMIService = GetObject(“winmgmts:” _
& “{impersonationLevel=impersonate}!\\” & strComputer & “\root\cimv2”)
Set colServiceList = objWMIService.ExecQuery _
(“Select * from Win32_Service where Name=’NetDDE'”)
For each objService in colServiceList
errReturn = objService.StartService()
Next
Wscript.Sleep 20000
Set colServiceList = objWMIService.ExecQuery(“Associators of ” _
& “{Win32_Service.Name=’NetDDE’} Where ” _
& “AssocClass=Win32_DependentService ” & “Role=Dependent” )
For each objService in colServiceList
objService.StartService()
Next

9. Thêm user trên domain vào local administrator group:

Dim oNet
Set oNet = WScript.CreateObject(“WScript.Network”)

strComputer = oNet.ComputerName

Set objAdmins = GetObject(“WinNT://” & strComputer & “/Administrators”)
Set objGroup = GetObject(“WinNT://domain/user group here“)

objAdmins.Add(objGroup.ADsPath)

On Error Resume Next ‘If the AD Global Group is already a Member then carry on

10. Thêm user trên domain global group vào local administrator group:

Dim oNet
Set oNet = WScript.CreateObject(“WScript.Network”)

strComputer = oNet.ComputerName

Set objAdmins = GetObject(“WinNT://” & strComputer & “/Administrators”)
Set objGroup = GetObject(“WinNT://domain/username“)

objAdmins.Add(objGroup.ADsPath)

On Error Resume Next ‘If the AD Global Group is already a Member then carry on

About Terri

System Administrator @Netpower Datacenter

Posted on 01.12.2010, in Technical Articles, Windows and tagged , , . Bookmark the permalink. Leave a comment.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: