我有这个软件,要求每个用户只有他们可以查看共享的个人文件夹,就像主文件夹一样。现在,我正在处理此脚本,该脚本在用户每次登录时都会执行,我希望该脚本检查共享上是否已经存在一个具有其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'
答案 0 :(得分:0)
我发现使用本机Powershell甚至.NET进行ACL修改过于复杂。
您可以使用此代码通过一行设置完全控制权:
ICACLS "$($Path)" /grant "DOMAINSHORTNAME\$($ENV:USERNAME):(OI)(CI)F" /T
您可以根据需要随时调整ICACLS cmd,在线获取大量示例
只需几次运行该命令,每个需要权限的帐户一次即可。