首页 > 解决方案 > 自动在共享上创建文件夹并分配正确的权限

问题描述

我有这个软件,它要求每个用户都有一个个人文件夹,只有他们可以在共享中查看,就像主文件夹一样。现在我正在处理每次用户登录时都会执行的脚本,我希望脚本检查共享上是否已经有一个带有他们的 SAMaccountname 的文件夹,如果没有,它必须创建一个正确的权限。

我对 PowerShell 一点也不擅长,也不能再进一步了,我有它检查它并为用户分配正确权限的部分。但域管理员也需要完全控制,服务帐户需要 R&W 权限。有没有人可以帮助我进一步完成剧本?任何努力和帮助都将不胜感激。

当前脚本:路径很奇怪,因为我在 VMWare 上对其进行了测试。

$Path = "\\Win-hnf1r0tnhgh\F\Scans\$($ENV:USERNAME)"

if (!(Test-Path -Path $Path)) {

    New-Item -Path $Path -ItemType Directory

    }

    $Acl = Get-Acl -Path $Path -ErrorAction 'Stop'
    $Acl.SetAccessRuleProtection($True, $True) > $null
    Set-Acl -Path $Path -AclObject $Acl -ErrorAction 'Stop'
    $Acl = Get-Acl -Path $Path
    $Acl.Access.Where{$_.IdentityReference -eq "BUILTIN\Users"}.ForEach{$Acl.RemoveAccessRule($_) > $null}
    $PermissionChange = [System.Security.AccessControl.FileSystemAccessRule]::new($ENV:USERNAME, 'Modify', "ContainerInherit,ObjectInherit", "None", "Allow")
    $Acl.AddAccessRule($PermissionChange) > $null
    Set-Acl -Path $Path -AclObject $Acl -ErrorAction 'Stop'

标签: windowspowershelldictionarypermissions

解决方案


我发现使用本机 powershell 甚至 .NET 修改 ACL 过于复杂。

您可以使用它通过一行设置完全控制:

ICACLS "$($Path)" /grant "DOMAINSHORTNAME\$($ENV:USERNAME):(OI)(CI)F" /T

您可以根据需要调整 ICACLS cmd,网上有大量示例

只需运行该命令几次,每个需要权限的帐户一次。


推荐阅读