У меня есть несколько сценариев конфигурации системы от нашего сборщика, и я вспоминаю заметку о том, что команда Get-Acl
"не работает на определенных путях".
# NOTE: This method does not work well?
#$acl = Get-Acl -Path $Path
Типы путей, для которых мы устанавливали разрешения, были пустыми папками, созданными пользователем-администратором, впоследствии записанными в образ диска.Это команда PowerShell, которую мы использовали вместо этого.
$acl = (Get-Item $path).GetAccessControl("Access")
О, и она становится неясной, когда у вас есть объект ACL.Я не знаю, является ли это лучшим способом сделать это, но это фрагмент из того же сценария, на который я ссылаюсь выше.
$acl = (Get-Item $path).GetAccessControl("Access")
# Setup the access rule.
$allInherit = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit", "ObjectInherit"
$allPropagation = [System.Security.AccessControl.PropagationFlags]"None"
$AR = New-Object System.Security.AccessControl.FileSystemAccessRule $user, $permissions, $allInherit, $allPropagation, "Allow"
# Check if Access already exists.
if ($acl.Access | Where { $_.IdentityReference -eq $User})
{
$accessModification = New-Object System.Security.AccessControl.AccessControlModification
$accessModification.value__ = 2
$modification = $false
$acl.ModifyAccessRule($accessModification, $AR, [ref]$modification) | Out-Null
}
else
{
$acl.AddAccessRule($AR)
}
Set-Acl -AclObject $acl -Path $Path