Home Drive创建问题



我有一个PowerShell脚本来创建新用户的主驱动器,我使用以下命令:

Set-ADUser $User -HomeDrive $driveLetter -HomeDirectory $fullPath

它正在为用户创建主驱动器,但用户无法访问它。

还有一件事,我可以从AD控制台手动复制创建的主驱动器,然后再次粘贴并单击应用,然后它就可以正常工作了。

Set ADUser只会修改ActiveDirectory中的用户对象;文件夹本身的安全权限是一个附加步骤。

FileSystemRights枚举:MSDN

仅仅使用Set-ADUser是不够的,期望完全端到端地创建一个功能齐全的主目录;我们必须对有问题的文件夹设置权限,包括任何继承标志。

有几个步骤可以实现这一点,但简单地说:我们需要获取当前的访问控制列表(ACL(我们需要将所需权限添加到所述ACL我们需要编写新的ACL,结合已有的权限和新的权限。

正如你可能已经猜到的:

获取ACL设置ACL

我们可以这样做:

Set-ADUser $User -HomeDrive $driveLetter -HomeDirectory $fullPath -ea Stop
$homeShare = New-Item -path $fullPath -ItemType Directory -force -ea Stop
$acl = Get-Acl $homeShare
$FileSystemRights = [System.Security.AccessControl.FileSystemRights]"Modify"
$AccessControlType = [System.Security.AccessControl.AccessControlType]::Allow
$InheritanceFlags = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit"
$PropagationFlags = [System.Security.AccessControl.PropagationFlags]"InheritOnly"
$AccessRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($User.SID, $FileSystemRights, $InheritanceFlags, $PropagationFlags, $AccessControlType)
$acl.AddAccessRule($AccessRule)
Set-Acl -Path $homeShare -AclObject $acl -ea Stop

如果你觉得有创意,你也可以将一些标志组合成一个数组:

$InheritanceFlag = @('ContainerInherit','ObjectInherit')

请注意,此代码经过测试,并在任何环境中执行之前进行验证。

最新更新