Используете Get-ADOrganizationalUnit для рекурсивного получения OU? - PullRequest
0 голосов
/ 05 мая 2020

Я не мог заставить этот фрагмент кода возвращать все OU поддерева и его структуру ниже.

Потому что, когда я выполняю этот фрагмент, он возвращает только OU верхнего уровня, не включая Поддерево OU под ним?

Это сценарий:

$AllOUs = @(
    'Production Global'
    'Testing'
) | ForEach-Object {
    If ($ou = Get-ADOrganizationalUnit -SearchScope Subtree -Filter "name -eq '$($_)'") {
        $ou.DistinguishedName
    }
    Else {
        Throw "OU '$($_)' not found!"
    }
}

Это неполный результат:

OU=Production Global,DC=domain,DC=com
OU=Testing,DC=domain,DC=com

Ниже представлена ​​структура OU в моем текущем AD:

OU=Production Global,DC=domain,DC=com
    OU=Azure,OU=Production Global,DC=domain,DC=com
    OU=AWS,OU=Production Global,DC=domain,DC=com
    OU=GCP,OU=Production Global,DC=domain,DC=com

OU=Testing,DC=domain,DC=com
    OU=IT-Developer,OU=Testing,DC=domain,DC=com
        OU=Team1,OU=IT-Developer,OU=Testing,DC=domain,DC=com
        OU=Team2,OU=IT-Developer,OU=Testing,DC=domain,DC=com
    OU=UAT,OU=Testing,DC=domain,DC=com
        OU=CustomerA,OU=UAT,OU=Testing,DC=domain,DC=com
        OU=CustomerB,OU=UAT,OU=Testing,DC=domain,DC=com

Что можно сделать, чтобы вернуть этот результат, как указано выше?

Я также получил эту ошибку ниже:

Get-ADOrganizationalUnit : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'SearchBase'. Specified method is not supported.
At line:20 char:50
+ ... rganizationalUnit -Filter * -SearchBase $ou.DistinguishedName -Search ...
+                                             ~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [Get-ADOrganizationalUnit], ParameterBindingException
    + FullyQualifiedErrorId : CannotConvertArgument,Microsoft.ActiveDirectory.Management.Commands.GetADOrganizationalUnit
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...