![如何使用 Powershell 的 Get-ADOrganizationUnit 和 Get-ADComputer 提取多个 OU 名称](https://linux22.com/image/771735/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Powershell%20%E7%9A%84%20Get-ADOrganizationUnit%20%E5%92%8C%20Get-ADComputer%20%E6%8F%90%E5%8F%96%E5%A4%9A%E4%B8%AA%20OU%20%E5%90%8D%E7%A7%B0.png)
在 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