WinBatch Tech Support Home

Database Search

If you can't find the information using the categories below, post a question over in our WinBatch Tech Support Forum.

TechHome

Samples from Users

Can't find the information you are looking for here? Then leave a message over on our WinBatch Tech Support Forum.

Set Home Directory for User

 Keywords: Set Home Directory Home Directory Home_dir for User ADSI COM dsSetProperty wntUserSetDat

Question:

I would like to set a users Home directory property. How can this be accomplished in WinBatch?

Answer:

You have a few options: Win32 Network Extender has a function wntUserSetDat
; Load Appropriate Extender
AddExtender('wwwnt34i.dll',0,'wwwnt64i.dll')
Pause('Current',wntUserGetDat("\\domain","domain\joed","home_dir",0))
wntUserSetDat("\\domain","domain\joed","home_dir","\\server\share\username",0)
Pause('updated',wntUserGetDat("\\domain","domain\joed","home_dir",0))
Exit
ADSI Extender function dsSetProperty of HomeDirectory.
;***************************************************************************
;**         Set Home Directory for User using ADSI Extender
;**
;**
;** Purpose: Set Home Directory and Home Drive for an AD user.
;** Inputs:  Home directory path and home drive
;** Outputs: display results
;** Revisions:  Deana Falk 2013.10.10
;***************************************************************************
AddExtender("wwads44i.dll")
ServerDn=dsGetProperty("LDAP://rootDSE", "serverName")
ServerName=ItemExtract(2, ItemExtract(1, ServerDn, ","), "=")
ServerDn=dsGetProperty("LDAP://rootDSE", "defaultNamingContext")
ServerPath="LDAP://%ServerName%/%ServerDN%"
list = dsFindPath (ServerPath, "(& (objectClass=User))")
strUserPath = AskItemlist('User list', list, @TAB, @UNSORTED, @SINGLE )

strUser = dsGetProperty(strUserPath, "sAMAccountName")
strHomeDirectory = "\\DC\Sample\Sales\" : strUser  ; !!! MODIFY TO FIT YOUR NEEDS !!!
strHomeDrive = "H:"                                ; !!! MODIFY TO FIT YOUR NEEDS !!!

dsSetProperty(strUserPath, "HomeDirectory", strHomeDirectory )
dsSetProperty(strUserPath, "HomeDrive", strHomeDrive )

;Check our work.
result = dsGetProperty(strUserPath, "HomeDirectory")
Message("Property Value Just Set.", result)

Exit
ADSI using COM
;***************************************************************************
;**         Set Home Directory for User using ADSI COM
;**
;**
;** Purpose: Set Home Directory and Home Drive for an AD user.
;** Inputs:  Home directory path and home drive
;** Outputs: display results
;** Revisions:  Deana Falk 2013.10.10
;***************************************************************************
objADOCmd = ObjectCreate("ADODB.Command")
objADOConn = ObjectCreate("ADODB.Connection")
objADOConn.Provider = "ADsDSOObject"
objADOConn.Open("Active Directory Provider")
objADOCmd.ActiveConnection = objADOConn

; Get Server LDAP Path
objRootDSE = GetObject("LDAP://rootDSE")
strServerName = objRootDSE.ServerName
strServerName= "LDAP://":ItemExtract(2, ItemExtract(1, strServerName, ","), "="):"/"

strServerDn = objRootDSE.Get("defaultNamingContext")
strServerPath = "<LDAP://":strServerDn:">"

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Get a list of User LDAP paths
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
strFilter = "(&(objectCategory=person)(objectClass=user))"
strAttributes = "DistinguishedName"  ; "sAMAccountName,DistinguishedName" Comma delimited list of attribute values to retrieve.

; Construct the LDAP syntax query.
strQuery = strServerPath : ";" : strFilter : ";" : strAttributes : ";subtree"
objADOCmd.CommandText = strQuery
objADOCmd.Properties("Page Size") = 100
objADOCmd.Properties("Timeout") = 30
objADOCmd.Properties("Cache Results") = @FALSE

; Run the query.
objADORecordset = objADOCmd.Execute

; Enumerate the resulting recordset.
list = ""
While !objADORecordset.EOF
    ; Retrieve values and display.
    strDN= objADORecordset.Fields("DistinguishedName").value
    If List == "" Then list = strServerName:strDn
    Else list = list : @TAB: strServerName:strDn
    ; Move to the next record in the recordset.
    objADORecordset.MoveNext
EndWhile
userLDAPpath = AskItemlist('User list', list, @TAB, @UNSORTED, @SINGLE )

; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
; Set Home Directory for User using ADSI COM
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
objUser = GetObject( userLDAPpath )
strHomeDir = objUser.homeDirectory
type = ObjectTypeGet(strHomeDir)
If type == "EMPTY"
     strUser = objUser.sAMAccountName
     strHomeDirectory = "\\DC\Sample\Sales\" : strUser  ; !!! MODIFY TO FIT YOUR NEEDS !!!
     objUser.homeDirectory = strHomeDirectory
     objUser.homeDrive = "H:"                           ; !!! MODIFY TO FIT YOUR NEEDS !!!
     objUser.SetInfo
     Pause("Notice", "Users HomeDirectory has been set")
ElseIf type == "NULL"
     Pause("User property not found", "NULL")
Else
     Pause("Users HomeDrive", objUser.homeDrive)
EndIf

objADORecordset = 0
objADOConn = 0
objADOCmd = 0
objRootDSE = 0
Exit

Article ID:   W17553
Filename:   Set Home Directory for User.txt
File Created: 2013:10:10:11:26:42
Last Updated: 2013:10:10:11:26:42