You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过PowerShell脚本切换目录的加密属性?

目录加密属性说明与需求实现

目录的加密属性仅作为标记,指示其所有子项都应被加密。

针对文件,可通过以下命令切换加密状态:

(Get-Item -Path filename).Decrypt()
(Get-Item -Path filename).Encrypt()

这些方法定义在FileInfo类中,DirectoryInfo类不存在此类方法。无论文件还是目录,都无法直接通过修改属性值的方式切换加密状态,例如以下操作无效:

(Get-Item -Path filename).Attributes -= 'Encrypted'

备注:直接修改属性的方式适用于Archive、ReadOnly等属性,但不适用于Compressed、Encrypted、Directory等属性。

需求与问题

需要实现以下操作:

  • 在已加密的目录内创建新目录
  • 将该新目录的加密属性设为false
  • 向新目录添加文件时,文件不会自动被加密

不接受先填充目录再逐个调用Decrypt()的方案,因为无法解决新文件自动加密的问题。

解决方案:可以实现

核心思路是打破EFS的加密继承链,通过修改新目录的权限继承设置,阻止子项自动继承加密属性。以下是PowerShell脚本实现:

# 配置路径
$parentEncryptedDir = "C:\示例\已加密目录"
$newDirName = "未加密子目录"
$newDirPath = Join-Path -Path $parentEncryptedDir -ChildPath $newDirName

# 1. 在已加密目录内创建新目录
New-Item -Path $newDirPath -ItemType Directory -Force

# 2. 取消加密继承并重新赋予权限,阻止自动加密
icacls $newDirPath /inheritance:e /remove:g "Authenticated Users" "SYSTEM" "Administrators"
icacls $newDirPath /grant:r "Authenticated Users:(OI)(CI)F"
icacls $newDirPath /grant:r "SYSTEM:(OI)(CI)F"
icacls $newDirPath /grant:r "Administrators:(OI)(CI)F"

# 验证新目录属性(应无Encrypted标记)
Get-Item $newDirPath | Select-Object Name, Attributes

原理说明

已加密目录的加密属性会让新创建的子项自动继承加密规则,通过icacls命令重置权限继承并重新赋予完整控制权限,可切断EFS的加密继承关联。后续在该新目录中创建或复制的文件,均不会自动被加密。


内容的提问来源于stack exchange,提问作者darda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 02:57:30