Вы можете использовать команду icacls
для отображения или изменения прав доступа к любому файлу или папке. Для добавления недостающей группы в папку, что-то, как это должно работать:
Set sh = CreateObject("WScript.Shell")
fldr = "C:\some\folder"
group = "TA\admin"
rc = sh.Run("%COMSPEC% /c icacls """ & fldr & """ | find /i """ & group _
& """", 0, True)
If rc <> 0 Then sh.Run "icacls """ & fldr & """ /grant " & group & ":F"
Для перечисления разрешений на дереве папок что-то вроде ntfsacls
или AuditACLs.vbs
может быть лучшим выбором, хотя. Пример
icacls
использование:
icacls "C:\some\folder" /grant FOO\bar:(OI)(CI)RX Administrators:(OI)(CI)F
Это предоставит группу «бар» домена «Foo» чтение/выполнение и локальную группу «Администраторы» полный доступ к папке «C : \ some \ folder "и все его подпапки, которые настроены на наследование разрешений от их родителя.
Чтобы запустить эту команду из VBScript с переменными для папки и групп вы бы это сделать:
fldr = "C:\some\folder"
groupA = "FOO\bar"
groupB = "Administrators"
Set sh = CreateObject("WScript.Shell")
sh.Run "icacls """ & fldr & """ /grant " & groupA & ":(CI)(OI)RX " _
& groupB & ":(CI)(OI)F"
спасибо за сценарий, но это может быть запущен в VBS или PowerShell? Как вы думаете, один сценарий может отображать список всех разрешений NTFS, а затем добавлять дополнительную группу для полного доступа или разрешения доступа к RW? Это будет сложный сценарий. Я даже не знаю, где добавить имя сервера и общие имена. – Ginger
Тогда я полагаю, вам нужно нанять кого-то, чтобы сделать работу. Это, безусловно, можно сделать в одном сценарии, но написать его во всей полноте - это лиги, выходящие за рамки SO. Вы можете использовать мой скрипт ['AuditACLs.vbs'] (http://www.planetcobalt.net/sdb/auditacls.shtml) в качестве отправной точки и добавить код для [предоставления разрешений] (http://stackoverflow.com/ a/13341479/1630171). –