PowerShell 技能连载 - 添加或重置 NTFS 权限

当您需要为一个文件添加一个新的 NTFS 存取规则,或禁用继承并添加新的规则,以下是一个示例脚本,演示这个技巧并且为您提供一个模板。

这个脚本创建一个测试文件,然后以当前用户的身份定义一个新的存取规则。这个规则包含读取和写入权限。这个新规则被添加到已存在的安全描述符中。另外,将禁用继承。

# create a sample file to apply security rules to
$Path = "$env:temp\examplefile.txt"
$null = New-Item -Path $Path -ItemType File -ErrorAction SilentlyContinue

# use current user or replace with another user name
$username = "$env:USERDOMAIN\$env:USERNAME"

# define the new access rights
$colRights = [System.Security.AccessControl.FileSystemRights]'Read, Write'
$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($username)

# create new access control entry
$objACE = New-Object System.Security.AccessControl.FileSystemAccessRule `
    ($objUser, $colRights, $InheritanceFlag, $PropagationFlag, $objType)

# get existing access control list for a file or folder
$objACL = Get-Acl -Path $Path

# add rule
$objACL.AddAccessRule($objACE)

# disable inheritance (if needed)
$objACL.SetAccessRuleProtection($true, $false)

# apply changed access control list to file
Set-Acl -Path $Path -AclObject $objACL

# show file in the File Explorer
explorer.exe "/SELECT,$Path"

执行完成之后,该脚本在文件管理器中打开测试文件,并选中它。您可以右键单击该文件并选择 属性 > 安全 来查看新的设置。

要查看有哪些存取权限可用,请在 ISE 编辑器中键入以下这行:

这将自动打开上下文菜单并列出所有可用的设置。

PowerShell 技能连载 - 添加或重置 NTFS 权限

http://blog.vichamp.com/2014/05/20/adding-and-resetting-ntfs-permissions/

作者

吴波

发布于

2014-05-20

更新于

2022-07-06

许可协议

评论