我正在尝试使用powershell设置文件ACE。我无法通过对set-acl
的同一调用来设置多个权限。
所以已经使用了函数并为我想要的每个权限授予调用函数。但是,set-acl
未能同时设置“修改”和“写入”权限。我现在很困惑。
我运行脚本并且只获取写权限集。函数运行没有错误,但我没有得到正确的ACE集。
我真的不明白为什么第二次调用addaccessrule会破坏第一次调用?
$StartingDir1 = "C:\_WPCYB"
$StartingDir2 = "C:\Program Files\Adobe\Adobe InDesign CC 2017\Plug-Ins"
$WcolRights = [System.Security.AccessControl.FileSystemRights]"Write"
$McolRights = [System.Security.AccessControl.FileSystemRights]"Modify"
$InheritanceFlag = System.Security.AccessControl.InheritanceFlags]::None
$PropagationFlag = [System.Security.AccessControl.PropagationFlags]::None
$objType = [System.Security.AccessControl.AccessControlType]::Allow
$objUser = New-Object System.Security.Principal.NTAccount("HA\Domain Users")
function set-perm-on-dir ($dir, $perm) {
# handle the starting directory itself, d1
echo setting perms on directory $dir setting $perm
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule($objUser, WcolRights, $InheritanceFlag, $PropagationFlag, $objType)
echo "New ACE is " $objACE
$d1 = Get-Item $StartingDir1
$acla = get-acl $d1
$acla.AddAccessRule($objACE)
set-acl -Path $d1.FullName -AclObject $acla
}
set-perm-on-dir -dir $StartingDir1 -perm $WcolRights
set-perm-on-dir -dir $StartingDir1 -perm $McolRights
答案 0 :(得分:1)
NTFS权限是使用本机命令设置的噩梦,我个人使用File System Security Module来执行此操作,因为它更容易理解(其命令就像您使用GUI执行的操作)。
要为Modify
禁用继承并授予Domain\User
权限,它只需要两个简单的命令:
$folder = "C:\folder"
Get-Item $folder | Disable-NTFSAccessInheritance
Get-Item $folder | Add-NTFSAccess -Account "Domain\User" -AccessRights Modify
修改强>
大多数模块都不包含在PowerShell中,您必须下载并安装它们。
PowerShell Gallery可以使用prerequisites提供大量这些内容,并且可以使用Install-Module -Name ModuleName
进行安装(此命令原生于PS v5 +,但如果您使用的话需要{{3}}旧版本)
因此,对于我在上面使用的模块:Install-Module -Name NTFSSecurity