Muzza Posted July 24, 2007 Posted July 24, 2007 Hi All, I am developing a simple app to move computers in AD. CODELocal $NewOuObj = ObjGet($strNewOU) Local $strMvResult = $NewOuObj.MoveHere($strOrgLDapName, "") Where: $strNewOU = "LDAP://CN=Computers,DC=mydom,DC=com,DC=au" and $strOrgLDapName = "LDAP:\\CN=MG0668,OU=Workstations,DC=mydom,DC=com,DC=au" On execute i get "The requested action with this object has failed" :-) I have searched this forum and found a number of ppl asking the same question but none of the solutions work. Any help greatly appreciated ! thanks, Muzza
ptrex Posted July 24, 2007 Posted July 24, 2007 @Muzza Maybe you can do it in 2 steps : expandcollapse popup; AddUserToGroup ; Takes the group (SamAccountName without leading 'CN=') and the user (SamAccountName without leading 'CN=') ; Adds the user to the group ; Returns 0 if the user is already a member of the group, 1 if the user was added to the group Func AddUserToGroup($group, $user) If IsMemberOf($group, $user) Then Return 0 Dim $objConnection, $objRootDSE $objConnection = ObjCreate("ADODB.Connection") ; Create COM object to AD $objConnection.Provider = "ADsDSOObject" $objConnection.Open ("Active Directory Provider") ; Open connection to AD $objRootDSE = ObjGet("LDAP://RootDSE") Global $strDNSDomain = $objRootDSE.Get ("defaultNamingContext") ; Retrieve the current AD domain name $strQuery = "<LDAP://" & $strDNSDomain & ">;(sAMAccountName=" & $user & ");ADsPath;subtree" $objRecordSet = $objConnection.Execute ($strQuery) ; Retrieve the FQDN for the user $ldap_entry = $objRecordSet.fields (0).value $oUsr = ObjGet($ldap_entry) ; Retrieve the COM Object for the user $strQuery = "<LDAP://" & $strDNSDomain & ">;(sAMAccountName=" & $group & ");ADsPath;subtree" $objRecordSet = $objConnection.Execute ($strQuery) ; Retrieve the FQDN for the group $ldap_entry = $objRecordSet.fields (0).value $oGroup = ObjGet($ldap_entry) ; Retrieve the COM Object for the group $OGroup.Add ($oUsr.AdsPath) $OGroup.SetInfo Return 1 EndFunc ;==>AddUserToGroup ; RemoveUserFromGroup ; Takes the group (SamAccountName without leading 'CN=') and the user (SamAccountName without leading 'CN=') ; Removes the user from the group (if the user is a member of the group) ; Returns 0 if the user isn't a member of the group, 1 if the user was removed from the group Func RemoveUserFromGroup($group, $user) If IsMemberOf($group, $user) = 0 Then Return 0 Dim $objConnection, $objRootDSE $objConnection = ObjCreate("ADODB.Connection") ; Create COM object to AD $objConnection.Provider = "ADsDSOObject" $objConnection.Open ("Active Directory Provider") ; Open connection to AD $objRootDSE = ObjGet("LDAP://RootDSE") Global $strDNSDomain = $objRootDSE.Get ("defaultNamingContext") ; Retrieve the current AD domain name $strQuery = "<LDAP://" & $strDNSDomain & ">;(sAMAccountName=" & $user & ");ADsPath;subtree" $objRecordSet = $objConnection.Execute ($strQuery) ; Retrieve the FQDN for the user $ldap_entry = $objRecordSet.fields (0).value $oUsr = ObjGet($ldap_entry) ; Retrieve the COM Object for the user $strQuery = "<LDAP://" & $strDNSDomain & ">;(sAMAccountName=" & $group & ");ADsPath;subtree" $objRecordSet = $objConnection.Execute ($strQuery) ; Retrieve the FQDN for the group $ldap_entry = $objRecordSet.fields (0).value $oGroup = ObjGet($ldap_entry) ; Retrieve the COM Object for the group $oGroup.Remove ($oUsr.AdsPath) $OGroup.SetInfo Return 1 EndFunc ;==>RemoveUserFromGroup regards ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New
Muzza Posted July 25, 2007 Author Posted July 25, 2007 Hi ptrex, Sorry, I am after assistance moving a PC between 'OU' in AD not group membership. (I will have to remember to state my requests clearer) But anyway thanks heaps for the code you submitted it will be useful to me as well. Muzza
ptrex Posted July 25, 2007 Posted July 25, 2007 (edited) @Muzza Maybe something like this ? ; This code moves an object from one location to another in the same domain. ; ------ SCRIPT CONFIGURATION ------ $strNewParentDN = "LDAP://<NewParentDN>" $strObjectDN = "LDAP://cn=jsmith,<OldParentDN>" $strObjectRDN = "cn=jsmith" ; ------ END CONFIGURATION --------- $objCont = ObjGet($strNewParentDN) $objCont.MoveHere $strObjectDN, $strObjectRDNoÝ÷ Ù8b²j/y©e ©º×«²)ÚåºÚ"µÍÌÍÛØ]ÓÕHHØÙ] ][ÝÓTËÛÝOY[[ÙKÏYXZØ[KÏXÛÛI][ÝÊBÌÍÛØÛÕHHØÙ] ][ÝÓTËÛÝOXXØÛÝ[[ËÏYXZØ[KÏXÛÛI][ÝÊBÌÍÛØÛÕK[H ÌÍÐ^J ][ÝÐÛÛ]][ÝÊBÜ ÌÍÛØÙ[ ÌÍÛØÛÕB ÌÍÛØ]ÓÕK[ÝRH ÌÍÛØÙQÔ]Y][ B^ regards ptrex Edited July 25, 2007 by ptrex Contributions :Firewall Log Analyzer for XP - Creating COM objects without a need of DLL's - UPnP support in AU3Crystal Reports Viewer - PDFCreator in AutoIT - Duplicate File FinderSQLite3 Database functionality - USB Monitoring - Reading Excel using SQLRun Au3 as a Windows Service - File Monitor - Embedded Flash PlayerDynamic Functions - Control Panel Applets - Digital Signing Code - Excel Grid In AutoIT - Constants for Special Folders in WindowsRead data from Any Windows Edit Control - SOAP and Web Services in AutoIT - Barcode Printing Using PS - AU3 on LightTD WebserverMS LogParser SQL Engine in AutoIT - ImageMagick Image Processing - Converter @ Dec - Hex - Bin -Email Address Encoder - MSI Editor - SNMP - MIB ProtocolFinancial Functions UDF - Set ACL Permissions - Syntax HighLighter for AU3ADOR.RecordSet approach - Real OCR - HTTP Disk - PDF Reader Personal Worldclock - MS Indexing Engine - Printing ControlsGuiListView - Navigation (break the 4000 Limit barrier) - Registration Free COM DLL Distribution - Update - WinRM SMART Analysis - COM Object Browser - Excel PivotTable Object - VLC Media Player - Windows LogOnOff Gui -Extract Data from Outlook to Word & Excel - Analyze Event ID 4226 - DotNet Compiler Wrapper - Powershell_COM - New
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now