![通过 Powershell 删除用户主目录/设置权限](https://linux22.com/image/1544978/%E9%80%9A%E8%BF%87%20Powershell%20%E5%88%A0%E9%99%A4%E7%94%A8%E6%88%B7%E4%B8%BB%E7%9B%AE%E5%BD%95%2F%E8%AE%BE%E7%BD%AE%E6%9D%83%E9%99%90.png)
我们有大量用户不再在该组织工作,我们目前正在研究删除他们的主驱动器的最佳方法。
不幸的是,某些系统创建的文件夹(下载、文档、音乐……)的文件权限存在问题,这意味着当我们手动执行这些操作时,我们需要在顶层将域管理员设置为所有者,替换下层设置,然后授予域管理员完全控制权,然后才能删除文件夹。我们无法应用于包含文件夹,因为同一区域中也有当前用户。
我尝试创建一个脚本(如下所示)来对帐户所在的 OU 中的每个用户执行所有这些操作。运行该脚本后,第一个用户之后便无法继续,并且导致服务器拒绝用户和管理员浏览共享的任何尝试,尽管文件权限未受影响。重新启动服务器解决了这个问题,但我对自己进行进一步更改的任何尝试持谨慎态度。
$Students = Get-ADUser -Filter {Enabled -eq $false} -SearchBase "OU=StudentHold,DC=DOMAIN,DC=lan"
ForEach ($User in $Students){
#Write the folder location to the screen.
Write-Host (Get-ADUser -Identity $User -Properties homeDirectory).homeDirectory
$StudentHome = (Get-ADUser -Identity $User -Properties homeDirectory).homeDirectory
#Make an Security object. Set the Owner to Domain Admins. Apply it to the Student Home Directory.
$OwnerAcl = New-Object System.Security.AccessControl.DirectorySecurity
$OwnerAcl.SetOwner([System.Security.Principal.NTAccount]'DOMAIN\Domain Admins')
(Get-Item $StudentHome).SetAccessControl($OwnerAcl)
#Get the Security settings for the Student Home Directory. Add Full Control for Domain Admins. Apply it.
$Acl = (Get-Item $StudentHome).GetAccessControl('Access')
$Ar = New-Object System.Security.AccessControl.FileSystemAccessRule("DOMAIN\Domain Admins", 'FullControl','ContainerInherit,ObjectInherit', 'None', 'Allow')
$Acl.SetAccessRule($Ar)
Set-Acl -path $StudentHome -AclObject $Acl
#Delete the Student Home Directory, and all contained folders.
Remove-Item -path $StudentHome -force -recurse
}
有没有明显的变化/更好的方法来做到这一点?我们目前将为大约 300 名用户执行此操作,并将其修改为每年为另外 500 名左右的用户运行。
我们位于 Windows 域中,主要是 Windows 7 工作站,所有这些特定用户都使用相同的强制配置文件。他们所有的个人文件都存储在网络上的主文件夹中。