В основном на моей новой работе у нас есть общая сетевая область с отдельными папками для каждого отдела.Каждая папка имеет несколько подпапок.Проблема заключается в том, что предыдущий менеджер назначил права доступа «полный доступ» на каждую папку и подпапку абсолютно всем, включая группу «все».Я хотел бы изменить разрешения безопасности «полный доступ» для модификации, но не для определенных групп безопасности, таких как администраторы домена и некоторые другие группы безопасности.
У меня есть некоторый код в 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. Мне нужно, чтобы он изменил разрешение на полный доступ для группы / пользователя, которого он только что нашел, и изменил его, чтобы изменить вместо него.