PowerShell: сбой сценария, поскольку объекты AD не были реплицированы достаточно скоро - PullRequest
1 голос
/ 05 октября 2010

У меня есть скрипт, который создает две группы, полный папок, и устанавливает разрешения для этих папок.В моей среде тестирования все эти процессы работают без проблем, но в моей производственной среде я сталкиваюсь с проблемой.Установка разрешений для папок не удалась, поскольку созданные мной группы не реплицировались через все 8 моих контроллеров домена.Может ли PowerShell работать только с одним из контроллеров домена, чтобы мне не пришлось ждать репликации?Должен ли я перевести скрипт в спящий режим на X секунд?Или есть какой-нибудь способ узнать, есть ли группы на всех DC или хотя бы на той, на которой я работаю?

Вот как я делаю группы:

New-ADGroup -Name $Admin_GRP -path "OU=Users,OU=Sandbox,DC=test,DC=local" -GroupScope Global
New-ADGroup -Name $User_GRP -path "OU=Users,OU=Sandbox,DC=test,DC=local" -GroupScope Global

Вот как я настраиваю разрешения для одной из папок:

#Set permissions on root directory
$ACL = Get-Acl $PathToFolder
#For Admin
$Permission = $Admin_GRP,"Write,ReadAndExecute,Synchronize,DeleteSubdirectoriesAndFiles","Allow"
$Access_Rule = New-Object System.Security.AccessControl.FileSystemAccessRule $Permission
$ACL.AddAccessRule($Access_Rule)
$ACL | Set-Acl $PathToFolder
#For Users
$Permission = $User_GRP,"ReadAndExecute,Synchronize","Allow"
$Access_Rule = New-Object System.Security.AccessControl.FileSystemAccessRule $Permission
$ACL.AddAccessRule($Access_Rule)
$ACL | Set-Acl $PathToFolder

Ответы [ 4 ]

1 голос
/ 08 октября 2010

В прошлом при написании сценариев оболочки я вызывал NLTEST.EXE, чтобы указать текущему ПК / серверу на конкретный DC (обычно я выбираю эмулятор PDC).Я не могу вспомнить, какой переключатель я использовал.Не уверен, поможет ли это.

1 голос
/ 05 октября 2010

Установите разрешение на SID новой группы вместо ее имени / samaccountname.

0 голосов
/ 20 марта 2012

У меня была точно такая же проблема.Оказывается, наша файловая система обновляет только свой собственный кэш SID каждые 20 - 30 секунд.Поэтому, если бы я создал новый SID и сразу попытался применить его к папке, наша файловая система сказала бы, что SID неизвестен.Я изменил настройку в нашей файловой системе, чтобы она могла принимать «неизвестные» идентификаторы безопасности (даже если они были известны AD, и они просто не обновлялись).Дополнительная информация здесь:

Проблемы с New-ADGroup, Set-ACL и сетевыми папками

Спать сценарий, безусловно, не вариант, если у вас 7,5 миллионов файлов и папок!

0 голосов
/ 06 октября 2010

Я решил использовать цикл while для проверки репликации группы.

#Wait for group replication
while ($Admin_GRP_CHK -ne 'group')
{$Admin_GRP_CHK = (Get-ADGroup $Admin_GRP).ObjectClass
trap {'Admin group not replicated yet. Waiting 10 seconds.' -f $_.Exception.Message;    continue}
Start-Sleep -Seconds 10
}
Write-Host 'Admin group exists'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...