2017-11-20 18 views
-1

私は以下のスクリプトをうまく動作させることができます。これは、コンピュータオブジェクトのいくつかの属性を変更します。しかし、私はuseraccountの属性を変更する方法を知ることができません(従業員IDですが、実際は "Managed by"属性のために検索します)。誰かが余分な行を追加する方法を理解できますか?私はuseraccountの属性を変更できますか?ADの属性を変更するVBScript

'Retrieves all attributes for the specified computer object. 

Set WshShell = CreateObject("WScript.Shell") 
Set objEnv = WshShell.Environment("Process") 

Set args = WScript.Arguments 

strComputerName = WScript.Arguments.Item(0) 
strSiteCode = WScript.Arguments.Item(1) 
strEmployeeID = Mid(strComputerName, 2, 7) 
strSysDivision = WScript.Arguments.Item(2) 

Set conn1 = CreateObject("ADODB.Connection") 
Set objCommand1 = CreateObject("ADODB.Command") 
conn1.Provider = "ADsDSOObject" 
conn1.Open "ADs Provider" 
Set objCommand1.ActiveConnection = conn1 
objCommand1.Properties("Page Size") = 1000 
objCommand1.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
objCommand1.CommandText = "<LDAP://URL" & ">;(&(objectcategory=computer)(Name=" & strComputerName & "));adspath;subtree" 
Set rs1 = objCommand1.Execute 
Set objComputer = GetObject(rs1.Fields(0).Value) 

Set conn = CreateObject("ADODB.Connection") 
Set objCommand = CreateObject("ADODB.Command") 
conn.Provider = "ADsDSOObject" 
conn.Open "ADs Provider" 
Set objCommand.ActiveConnection = conn 
objCommand.Properties("Page Size") = 1000 
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 
objCommand.CommandText="<LDAP://URL" & ">;(&(objectCategory=person)(objectClass=user)(employeeid=" & strEmployeeID & "));adspath;subtree" 
Set rs = objCommand.Execute 

While Not rs.EOF 
    Set Userobject = GetObject(rs.Fields(0).Value) 
    userdn = UserObject.distinguishedName 

    Userobject.Put "extensionattribute8", "test" 
    Userobject.SetInfo 

    If (Instr(userdn, "OU=Admin") > 1) Then 
    Else 
     ManagedByUser = Userobject.distinguishedName 
     UserObject = Null 
    End If 
    rs.MoveNext 
Wend 
rs.Close 
conn.Close 

On Error Resume Next 
objComputer.Put "ManagedBy", ManagedByUser 
objComputer.SetInfo 

objComputer.Put "extensionattribute1", strSiteCode 
objComputer.SetInfo 
objComputer.Put "employeeId", strEmployeeID 
objComputer.SetInfo 

On Error Resume Next 
objComputer.Put "Division", strSysDivision 
objComputer.SetInfo 

rs1.Close 
conn1.Close 
+0

2番目のクエリが実際に期待どおりの結果を返すことを確認します。また、あなたが期待した通りに*正確に*動作していないものはありますか?現在、ユーザーアカウントの属性を変更しようとしていません。 –

答えて

0

だから、実際にはスクリプトが正しいと思われます。しかし、確かに許可の問題があります。