Мне нужно получить объект ACL и заменить Access.IdentityReference.Value
, а остальную часть объекта оставить нетронутой, чтобы я мог применить Set-Acl
к другой системе.
$acl = Get-Acl -Path "C:\Temp"
$h = New-Object -TypeName PSObject
ForEach-Object -InputObject $acl -Process {
if ($_.Access.IdentityReference.Value -contains "BUILTIN\Users") {
"found"
$h += @($_.Access.IdentityReference.Value.Replace("BUILTIN\Users", "new\name"))
} else {
$h += @($_)
}
}
$h.Access
У меня так много способов сделать это, и лучшее, что я смог получить, это найти и заменить целевое значение, но потерять остальную часть исходного объекта.
Изменить: когда я пробую этот код:
$acl = Get-Acl -Path 'C:\Temp'
$ace = $acl.Access | Where-Object { $_.IdentityReference -eq 'BUILTIN\Users' }
$newAce = New-Object System.Security.AccessControl.FileSystemAccessRule (
'new\name',
$ace.FileSystemRights,
$ace.InheritanceFlags,
$ace.PropagationFlags,
$ace.AccessControlType
)
$acl.RemoveAccessRule($ace)
$acl.AddAccessRule($newAce)
Set-Acl -Path 'C:\Temp' -AclObject $acl
Я получаю следующую ошибку:
Exception calling "AddAccessRule" with "1" argument(s): "Some or all identity references could not be translated." At line:12 char:1 + $acl.AddAccessRule($newAce) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : IdentityNotMappedException
Edit2: новый скрипт, но еще не совсем готовый:
$Ssid = "S-1-5-21-2214593661-3374179426-1523454523-1133"
$Tsid = "S-1-5-21-2227185791-3254421074-497073356-1005"
$Spath = "\\clw01\dept\CLW_Site"
$Tpath = "\\clw03\dept\CLW_Site"
$acl = Get-Acl -Path $Spath
$ace = $acl.Access | Where-Object { $_.IdentityReference -eq $Ssid }
$newAce = New-Object System.Security.AccessControl.FileSystemAccessRule (
$Tsid,
$ace.FileSystemRights,
$ace.InheritanceFlags,
$ace.PropagationFlags,
$ace.AccessControlType
)
$acl.RemoveAccessRule($ace)
$acl.AddAccessRule($newAce)
Set-Acl -Path $Tpath -AclObject $acl
Я получаю следующую ошибку:
Exception calling "AddAccessRule" with "1" argument(s): "The trust relationship between the primary domain and the trusted domain failed." At line:9 char:1 + $acl.AddAccessRule($newAce) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : SystemException
new\name
можно разрешить на компьютере? Является лиnew
другим хостом? Доверенный домен? Внешний или в том же лесу? - person Ansgar Wiechers   schedule 19.12.2016Invoke-Command
. - person Ansgar Wiechers   schedule 19.12.2016