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

无权限用户PowerShell脚本开发:创建文件夹结构并配置只读权限

为无权限用户创建文件夹结构并配置只读权限的PowerShell脚本方案

针对你要给无权限用户开发脚本的需求,我把代码补全并优化了逻辑,确保能可靠完成文件夹创建和只读权限配置的工作。这里是完整的实现:

完整脚本代码

# 定义核心变量
$cr = "D:\TargetRoot" # 替换为你的目标根路径
$persons = @("User1", "User2", "Domain\User3") # 替换为要授权的用户列表
$cred = Get-Credential # 获取具有根目录修改权限的凭据(如果需要)

# 挂载PSDrive(如果需要通过特定凭据访问目标路径)
New-PSDrive -Name "target" -PSProvider "FileSystem" -Credential $cred -Root $cr | Out-Null

# 循环处理每个用户
foreach ($pers in $persons) {
    # 定义用户专属的文件夹路径(可根据需求调整结构,比如添加子文件夹)
    $userFolderPath = Join-Path -Path "target:\" -ChildPath $pers
    $subFolderPath = Join-Path -Path $userFolderPath -ChildPath "Documents" # 示例子文件夹
    
    # 1. 创建文件夹结构(-Force确保父文件夹不存在时自动创建)
    New-Item -Path $userFolderPath, $subFolderPath -ItemType Directory -Force | Out-Null

    # 2. 配置只读权限
    # 获取文件夹的当前ACL
    $acl = Get-Acl -Path $userFolderPath
    
    # 定义只读权限规则:ReadAndExecute,继承到子容器和对象,无传播限制
    $readOnly = [System.Security.AccessControl.FileSystemRights]"ReadAndExecute"
    $inheritanceFlag = [System.Security.AccessControl.InheritanceFlags]"ContainerInherit, ObjectInherit"
    $propagationFlag = [System.Security.AccessControl.PropagationFlags]"None"
    $accessControlType = [System.Security.AccessControl.AccessControlType]"Allow"
    
    # 创建访问规则对象
    $accessRule = New-Object System.Security.AccessControl.FileSystemAccessRule(
        $pers, $readOnly, $inheritanceFlag, $propagationFlag, $accessControlType
    )
    
    # 将规则添加到ACL(避免重复添加)
    if (-not $acl.Access | Where-Object {
        $_.IdentityReference.Value -eq $pers -and
        $_.FileSystemRights -eq $readOnly -and
        $_.AccessControlType -eq $accessControlType
    }) {
        $acl.AddAccessRule($accessRule)
        # 应用修改后的ACL到文件夹
        Set-Acl -Path $userFolderPath -AclObject $acl
        Write-Host "已为用户 $pers 在 $userFolderPath 配置只读权限"
    }
    else {
        Write-Host "用户 $pers 在 $userFolderPath 的只读权限已存在,无需重复设置"
    }
}

# 卸载PSDrive(可选)
Remove-PSDrive -Name "target"

关键部分说明

  • 文件夹结构创建:用New-Item -Force确保即使父文件夹不存在也能自动创建,你可以根据需求调整$userFolderPath和$subFolderPath来定义更复杂的层级。
  • 权限配置细节:
    • 权限选择ReadAndExecute,包含了文件夹的只读浏览和文件执行权限(符合常规只读需求)
    • 继承规则设置为ContainerInherit, ObjectInherit,确保权限会应用到子文件夹和文件
    • 添加了权限存在性检查,避免重复添加相同规则导致的ACL冗余
  • PSDrive使用:如果目标路径需要跨域或者不同凭据访问,挂载PSDrive是个可靠的方式;如果本地执行且已有权限,也可以直接操作本地路径,去掉PSDrive相关代码即可。

注意事项

  • 请以管理员身份运行脚本,确保有足够权限修改文件夹权限
  • 替换$cr和$persons变量为你的实际路径和用户列表
  • 如果是域用户,记得在用户名前加上域名(比如Domain\Username)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:17:25