如何使用 Powershell 的 Get-ADOrganizationUnit 和 Get-ADComputer 提取多个 OU 名称

如何使用 Powershell 的 Get-ADOrganizationUnit 和 Get-ADComputer 提取多个 OU 名称

在 AD 中,主机名是在位置 OU 下创建的,位于计算机子 OU 下的位置 OU 内。我需要一个脚本来在 excel 中提取两个 OU。我能够通过以下脚本提取一个 OU 详细信息

Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName |
    select-object Name, ipv4Address, OperatingSystem,
        @{label='OU';expression={$_.DistinguishedName.Split(',')[1].Split('=')[1]}}

我需要帮助来提取主要的 OU 详细信息,请帮忙

答案1

如果您想要路径中的所有 OU,则可以使用正则表达式模式来提取它们。

[regex]$pattern = '(?<=OU=)(.+?)(?=,\w{2}=)'

$searchbase = 'OU=Company,DC=Domain,DC=LOCAL'

$properties = 'Name',
              'ipv4Address',
              'OperatingSystem',
              @{n='OU';e={$pattern.Matches($_.DistinguishedName).Value -join ', '}}

$adparams = @{
    Filter     = '*'
    Searchbase = $searchbase
    Properties = 'ipv4Address',
                 'OperatingSystem'
}

Get-ADComputer @adparams |
    Select-Object $properties

如果您只关注计算机上方的 OU,那么类似的方法可能会有效。

[regex]$pattern = '(?<=OU=)(.+?)(?=,\w{2}=)'

$searchbase = 'OU=Company,DC=Domain,DC=LOCAL'

$properties = 'Name',
              'ipv4Address',
              'OperatingSystem',
              @{n='OUs';e={$pattern.Matches($_.DistinguishedName)[1].Value}}

$adparams = @{
    Filter     = '*'
    Searchbase = $searchbase
    Properties = 'ipv4Address',
                 'OperatingSystem'
}

Get-ADComputer @adparams |
    Select-Object $properties 

相关内容