PowerShell配置AD用户主目录映射失效问题求助
AD用户主文件夹映射脚本设置后未生效的问题
我用PowerShell脚本在Active Directory中创建用户,同时配置主文件夹映射到共享目录。AD用户的“配置文件”选项卡显示设置已生效,但登录用户账户后网络驱动器并未映射,多次注销登录也没用;但手动修改用户主文件夹设置后,映射就正常了。
脚本内容如下:
$creds = Get-Credential -Credential prod\administrator do { clear # ad user creation tool Write-Host ' ------------------------------------------------------------- AD User Creation tool ------------------------------------------------------------- ' Import-Module ActiveDirectory try { New-ADOrganizationalUnit 'DC=Prod,DC=Ido,DC=Local' -ErrorAction Stop -Credential $creds } Catch { Write-Host 'Temp OU Has Been Created' } $OU = 'OU=tempOU,DC=Prod,DC=Ido,DC=Local' $Firstname = Read-Host 'Enter The First Name' $lastname = Read-Host 'Enter the last name' $Username = $Firstname + $lastname[0] $password = Read-Host 'Enter a Password' -AsSecureString New-ADUser -Name "$Firstname $lastname" -GivenName $Firstname -Surname $lastname -SamAccountName $Username -AccountPassword $password -Enabled $true -Credential $creds $Idenity = Get-ADUser $Username | select -Property DistinguishedName Move-ADObject -Identity $Idenity.DistinguishedName -TargetPath $OU -PassThru -Credential $creds $DriveLatter = 'h' $HomeDirPath = '\\dc01\Data\HomeDIrectories\' + $username # Define the username and UNC path of the home directory #Set the home directory for the user Set-ADUser -Identity $username -HomeDrive 'h' -HomeDirectory $HomeDirPath -Credential $creds pause } while (1 -eq 1 )
排查方向及解决办法
- AD域复制延迟:脚本修改用户属性后,域控制器之间的同步可能有延迟,用户登录时连接的DC还没拿到最新的主文件夹设置。可以手动触发域控制器间的AD复制,或者等待5-10分钟后再登录测试。
- 主文件夹未创建/权限错误:脚本只设置了AD用户属性,但没有实际创建
\\dc01\Data\HomeDIrectories\$username这个文件夹,也没配置权限。手动修改时系统可能自动创建了文件夹并赋予权限,所以映射正常。可以在脚本中添加创建文件夹和设置权限的代码:
# 检查并创建主文件夹 if (-not (Test-Path $HomeDirPath)) { New-Item -ItemType Directory -Path $HomeDirPath -Credential $creds -Force # 给用户添加完全控制权限 $acl = Get-Acl $HomeDirPath $userPrincipal = "prod\$Username" $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule( $userPrincipal, 'FullControl', 'ContainerInherit,ObjectInherit', 'None', 'Allow' ) $acl.AddAccessRule($accessRule) Set-Acl $HomeDirPath $acl }
- OU创建代码错误:脚本中尝试创建
DC=Prod,DC=Ido,DC=Local这个OU是错误的,DC是域组件,不是OU路径。正确的OU创建命令应该是:
New-ADOrganizationalUnit 'tempOU' -Path 'DC=Prod,DC=Ido,DC=Local' -ErrorAction Stop -Credential $creds
原代码的错误会导致每次执行都进入Catch块,虽然不直接影响映射,但可能引发其他隐藏问题。
- 用户属性设置时机优化:可以在创建用户时直接指定主文件夹参数,避免后续修改属性带来的同步问题,修改
New-ADUser命令如下:
New-ADUser -Name "$Firstname $lastname" -GivenName $Firstname -Surname $lastname ` -SamAccountName $Username -AccountPassword $password -Enabled $true ` -HomeDrive 'h' -HomeDirectory $HomeDirPath -Credential $creds
这样就不需要后续调用Set-ADUser修改属性。
内容的提问来源于stack exchange,提问作者Ido Hemed
相关产品推荐
相关产品推荐

