基本上,在我的新工作中,我们有一个共享的网络区域,其中每个部门都有单独的文件夹。每个文件夹都有多个子文件夹。问题在于,先前的经理在每个文件夹和子文件夹上为包括“每个人”组在内的每个人分配了“完全访问”安全权限。我想更改“完全访问”安全权限以进行修改,但不想更改某些安全组(例如域管理员和某些其他安全组)。
我在PowerShell中有一些代码,可以为我提供哪些组具有完全访问权限的列表,但是我需要能够获取该列表并对其进行更改以进行修改。
这就是我无耻地偷走了别人的东西。
$path = "\\srv-shared\sharedfolders"
$ExcludeUsers = 'Domain\Domain Admins',
'NT AUTHORITY\SYSTEM',
'BUILTIN\Administrator',
'domain\Administrator'
# Create regex-pattern to match all excluded users
$ExcludeUsersRegex = ($ExcludeUsers | % { [regex]::Escape($_) }) -join '|'
Get-Childitem $path -Recurse -Directory | ForEach-Object {
$file = $_
Get-Acl -Path $file.FullName |
Select-Object -ExpandProperty Access |
Where-Object {
$_.IdentityReference -notmatch $ExcludeUsersRegex -and
$_.AccessControlType -eq "Allow" -and
$_.FileSystemRights -eq "FullControl"
} | ForEach-Object {
#Foreach ACL
New-Object psobject -Property @{
Path = $file.FullName
ACL = $_.IdentityReference
}
}
} | Select-Object -Property Path, ACL | Export-Csv e:\check_acl.csv -NoTypeInformation
基本上,在#Foreach ACL部分中,我需要它更改刚刚找到的组/用户的完全访问权限,并将其更改为修改。