2016-06-01 2 views
1

Аудиторы задают вопросы об ACL для определенных групп в нескольких разных доменах. Я собрал сценарий, который возвращает необходимую мне информацию для нашего основного домена (Учетные записи), но не может заставить его переключиться на другой домен (Medco), чтобы получить ACL для этих групп. Как переключить командлет Get-Acl, чтобы прочитать информацию из этого другого домена?Get-Acl из разных доменов

Get-Content 'U:\ad\scripts\Scripts - Input\ADGroup Permissions - Medco.txt' | ForEach-Object { 
    $OutputG = $_ 
    $Group = "AD:" + (Get-ADgroup $_ -Server Medco).distinguishedname 
    (Get-Acl $Group).access | 
    Where-Object { 
     $_.ActiveDirectoryRights -like "*write*" -or 
     $_.ActiveDirectoryRights -like "*delete*" 
    } | 
    Sort-Object IdentityReference | 
    Select-Object identityreference, 
     @{L='Access'; E={$_.ActiveDirectoryRights -join ";"}}, 
     @{"n"="Group";"e"={"$OutputG"}} 
} | Export-csv ".\Scripts - Output\ACL_Medco_$CurrentDate.csv" -NoTypeInformation 

Сценарий я читаю имена групп из текстового файла для конкретных областей, а затем ForEach-Object передать имя группы, чтобы получить distinguishedName использовать его в Get-Acl. Первый набор групп для основного домена возвращает информацию правильно (не показывая эту часть). Я знаю, что существуют группы, в следующем домене, но проблема в том, что Get-Acl для него выдает ошибку о том,

Get-Acl : Cannot find path 'AD:CN=Medco Infrastructure & Security,OU=Recipients - 
Distribution Lists,OU=Legacy Exchange 5.5,OU=Exchange,DC=medco,DC=com' because it 
does not exist. 
At line:4 char:4 
+ (Get-Acl $Group).access 
+ ~~~~~~~~~~~~~~ 
    + CategoryInfo   : ObjectNotFound: (:) [Get-Acl], ItemNotFoundException 
    + FullyQualifiedErrorId : GetAcl_PathNotFound_Exception, Microsoft.PowerShell.Commands.GetAclCommand

ответ

0

Вы должны использовать New-PSDrive для создания нового поставщика AD запроса, а не по умолчанию один AD :. Затем вы будете запрашивать этот новый диск, а не по умолчанию. Например:

New-PSDrive -Name AD2 -PSProvider ActiveDirectory -Server 'DC.medco.com' -root "//RootDSE/" 

$Group = 'AD2:' + (Get-ADgroup $_ -Server Medco).distinguishedname 
(Get-Acl $Group).access | 
. . . 

В случае, если вы хотите, чтобы динамически назначать сервер, вы можете использовать что-то вроде

(Get-ADDomainController -DomainName 'medco.com' -Discover).hostName 

и, если это необходимо, доменное имя, которое вы можете получить от существующих DistinguishedName

Если вы имеют более двух доменов, тогда вы должны использовать Remove-PSDrive перед установкой нового с тем же именем. Лучше всего было бы группировать группы AD для каждого домена, чтобы минимизировать команды добавления/удаления.

Смежные вопросы