我们有一个Powershell脚本作为部署的一部分运行,该脚本应该在Windows NAS上创建预期的目录层次结构。
它从CSV读取预期的UNC路径。 检查目录是否存在,如果找不到则创建目录 创建目录后,它将为某些域用户/组分配对这些路径的读取和/或修改访问权限
在Powershell中对ACL进行修改有点类似
$dir=Get-Item -Path $uncpath #e.g. \\server\environment\configuration
$acl = $dir.GetAccessControl()
$userTobeAdded = 'domain\user'
$acl.SetAccessRuleProtection($true,$false)
$accountTobeAdded = New-Object System.Security.Principal.NTAccount $userTobeAdded
$hasAccessAlready = $acl.GetAccessRules($true,$false,[System.Security.Principal.NTAccount]) | Where-Object {
$_.FileSystemRights -eq "Modify" -and
$_.AccessControlType -eq "Allow" -and
$_.IdentityReference -eq $Account
}
if(!$hasAccessAlready)
{
$newRule = New-Object System.Security.AccessControl.FileSystemAccessRule ($userTobeAdded,
'Modify',
'ContainerInherit|ObjectInherit',
'None', 'Allow')
$acls.AddAccessRule($newRule)
$dir.SetAccessControl($acls)
}
该脚本几乎一直都能正常工作,但是偶尔我们会遇到以下问题
这不是一直可复制的,它很少发生,但确实如此。 任何人都可以分享一些有关如何解决此问题的想法吗?
预先感谢