使用Get-ADOrganizationalUnit递归获取OU?

问题描述 投票:0回答:1

我无法让这段代码返回所有子树 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

以下是我当前AD中的OU结构:

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
powershell active-directory
1个回答
0
投票

下面是正确的脚本而不是过滤器,请使用 searchbase

$AllOU = @( “全球生产” “测试” )| ForEach-对象 {

$o = Get-ADOrganizationalUnit -Filter "name -eq '$($_)'"
If ($ou = Get-ADOrganizationalUnit -SearchScope Subtree -Searchbase $o) {
    $ou.DistinguishedName
}
Else {
    Throw "OU '$($_)' not found!"
}

}

© www.soinside.com 2019 - 2024. All rights reserved.