自动创建共享文件夹并分配正确的权限

时间:2018-12-13 10:44:00

标签: windows powershell dictionary permissions

我有这个软件,要求每个用户只有他们可以查看共享的个人文件夹,就像主文件夹一样。现在,我正在处理此脚本,该脚本在用户每次登录时都会执行,我希望该脚本检查共享上是否已经存在一个具有其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'

1 个答案:

答案 0 :(得分:0)

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

您可以使用此代码通过一行设置完全控制权:

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

您可以根据需要随时调整ICACLS cmd,在线获取大量示例

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