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

需求:获取旧服务器共享中ACL与父项不同的文件/文件夹列表

PowerShell脚本:检测ACL权限与父项存在差异的文件/文件夹

核心逻辑:默认启用权限继承的对象,其ACL权限完全继承自父项;只有手动添加的非继承权限项会导致该对象与父项权限存在差异。以下脚本会递归遍历目标目录,筛选出所有带有显式权限项的文件和文件夹,并输出相关信息。

脚本代码

param(
    [Parameter(Mandatory=$true)]
    [string]$TargetPath
)

# 递归遍历目标路径下所有文件与文件夹(包含隐藏/系统对象)
Get-ChildItem -Path $TargetPath -Recurse -Force | ForEach-Object {
    $currentAcl = Get-Acl -Path $_.FullName
    # 筛选出非继承的权限条目(即手动添加的权限)
    $explicitAccessRules = $currentAcl.Access | Where-Object { -not $_.IsInherited }
    
    if ($explicitAccessRules) {
        # 构造结构化输出对象
        [PSCustomObject]@{
            对象路径 = $_.FullName
            对象类型 = if ($_.PSIsContainer) { "文件夹" } else { "文件" }
            显式权限 = $explicitAccessRules | Select-Object IdentityReference, FileSystemRights, AccessControlType
        }
    }
}

使用方法

  1. 将上述代码保存为Check-ACL-Diff.ps1
  2. 以管理员身份打开PowerShell,切换到脚本所在目录
  3. 运行脚本并指定目标共享目录:
    .\Check-ACL-Diff.ps1 -TargetPath "\\OldServer\SharedFolder"
    

关键说明

  • -Force参数确保遍历包含隐藏、系统属性的文件/文件夹
  • 仅输出带有显式权限的对象:这类对象的ACL与父项存在差异,因为它们添加了不继承自父级的权限规则
  • 输出的显式权限列会列出所有手动添加的用户/组、对应的权限类型(允许/拒绝)及具体权限内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:32:13