是否有一个简单的脚本,我可以用它来给目标文件夹和我想要使用的AD组,并将生成与该AD组的成员的一组文件夹,并委托给这些文件夹适当的权限?
我已经获得了dsget group "FQN" -members ,并返回FQN列表。
这是我正在寻找的一个例子…
SomeADGroup member1 member2 ... memberN Root Folder - has permission for SomeADGroup (already set up) member1 - member1 has modify; other SomeADGroup members, no permissions member2 - member2 has modify; other SomeADGroup members, no permissions ... memberN - memberN has modify; other SomeADGroup members, no permissions
在这里 – 拥有。
Option Explicit ' DOMAIN\Group to process Const DOMAIN = "DOMAIN" Const GROUP = "Human Resources Department" ' Destination path - Do not append a "\" Const DESTINATION_PATH = "C:\Test" ' Constants for the NameTranslate object. Const ADS_NAME_INITTYPE_GC = 3 Const ADS_NAME_TYPE_NT4 = 3 Const ADS_NAME_TYPE_1779 = 1 Dim objNameTranslate, objGroup, strUser, objShell Set objNameTranslate = CreateObject("NameTranslate") objNameTranslate.Init ADS_NAME_INITTYPE_GC, "" objNameTranslate.Set ADS_NAME_TYPE_NT4, DOMAIN & "\" & GROUP Set objGroup = GetObject("LDAP://" & Replace(objNameTranslate.Get(ADS_NAME_TYPE_1779), "/", "\/")) set objShell = CreateObject("Wscript.Shell") For Each strUser in objGroup.Members objShell.Run "%COMSPEC% /c mkdir " & DESTINATION_PATH & "\" & strUser.samAccountName objShell.Run "CACLS " & DESTINATION_PATH & "\" & strUser.samAccountName & " /E /G " & DOMAIN & "\" & strUser.samAccountName & ":F" Next ' strUser
快速浏览:
设置DOMAIN,GROUP和DESTINATION_PATH。 显然,当你运行这个命令时,你必须作为一个拥有目录权限的用户login,并且在DESTINATION_PATH下设置权限。
在PowerShell中,我可能会更有效率地做到这一点,除非我无法忍受PowerShell,也不想被打扰得更深入。 >微笑<同样,我可能已经用FileSystemObject完成了目录的制作,但是这对我来说写得更快。 我可以做一些更有趣的事情,而不是CACLS,但是,嘿,它的工作。
你可以使用PowerShell来做到这一点。 根据您的文件夹的大小和深度,可能需要一些recursion才能正常工作。
你可以简单地创build一个文件夹
New-Item c:\scripts\Windows PowerShell -type directory
然后设置权限的最简单的方法可能是使用if语句或类似的东西。
在powershell中,使用两个命令行get-acl和set-acl来更改权限。 因此,从具有正确权限的preifined文件夹获取权限集,并将其设置为您正在处理的文件夹。
或者将权限定义到variables中,只需要使用set-acl,具体取决于每个文件夹是否需要相同的权限。
然后使用几个IF语句或soemthing来指定基于文件夹名称的权限。
foreach ($file in $(Get-ChildItem $StartingDir -recurse)) { $acl=get-acl $file.FullName #Add this access rule to the ACL $acl.SetAccessRule($rule) #Write the changes to the object set-acl $File.Fullname $acl }