I tried to create user using New-QADUser cmdlet. I know this cmdlet has -HomeDrive switch. But the problem is that cmdlet is just applying path string to user's account and not creating user's home directory on the fileserver like it happens when you use ADUC console. How can I do it corerctly?


Does the script that is creating the user account have administrative access to the file server as well?

Why not let the script create the home drive? very simple example:

$user = read-host -prompt "Enter Username"
$share = "usershare$"
New-QADUser -name $user etc..
newitem -path \\$HOMEDRIVERSERVER.domain.com\$share -name $user -itemtype directory

The only gotcha here is then setting the ACLs on the folder, that could possibly be done with set-acl. A bit more info on ACLS here..


The nice thing about scripting it in this way is being able to then output what it is doing to a log file for script auditing purposes. Of course, it doesn't necessarily give you the 1-step nicety the MMC console does.

| improve this answer | |

Resulting code for creating and connecting home drive to user with $Sam sam account name:

$HomeDir = "<Path>"
$Sam = "<User's Sam Account Name>"
$User = Get-QADUser -SamAccountName "$Sam"
New-Item -Path $HomeDir -Name $Sam -ItemType Directory
$UserDir = "$HomeDir\$Sam"
$Rights = [System.Security.AccessControl.FileSystemRights]::FullControl
$Inherit=[System.Security.AccessControl.InheritanceFlags]::ContainerInherit -bor [System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule("$Sam",$Rights,$Inherit,$Propogation,$Access)
$ACL = Get-Acl $UserDir
Set-Acl $UserDir $ACL 
Set-QADUser -Identity $User -HomeDirectory "$UserDir" -HomeDrive "Z:"
| improve this answer | |

powershell setfolderpermission.ps1
download from http://www.powershell.nu/wp-content/uploads/2009/02/setfolderpermission.ps1

Function CreateHomeFolder {
  $homeserver = '\\homeserver'
  $HomeFolderRoot = "\home\'
  Mkdir ($homeserver + $HomeFolderRoot + $userinfo['AccountName'])

Function UpdateHomeDirRights2 {
  $homeserver = '\\taz'
  $HomeDrive = "S"
  $HomeFolderRoot = "\home\'
  $HomeDirectory = $homeserver + $HomeFolderRoot + $userinfo[*'AccountName'*]
  ./SetFolderPermission.ps1 -path $HomeDirectory -Access  $userinfo[*'UserPrincipalName'*] -Permission FullControl
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.