使用 Powershell 的 Get-ADOrganizationUnit 和 Get-ADComputer 提取 OU 名称

使用 Powershell 的 Get-ADOrganizationUnit 和 Get-ADComputer 提取 OU 名称

我想获取 Active Directory 上的服务器列表,还想包括它们的 IP、操作系统以及它们所属的组织单位。这是我的服务器所属的直接父 OU

我想出了以下 PS 脚本,它几乎满足了我的需要:


> Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName | select-object Name, ipv4Address, OperatingSystem, DistinguishedName

但是,OU 名称实际上是 DistinguishedName,很难看清,我真正想要的是该 DistinguishedName 上的第二个 OU 值。我只想显示黄色框中的值,而不是全名。

在此处输入图片描述

我尝试使用 Get-ADOrganizationUnit,但结果总是空白。这是我最近的尝试,你能发现我的 PS 脚本是否有错误吗?

> Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName | select-object Name, ipv4Address, OperatingSystem, @{label='DistinguishedName';expression={(Get-ADOrganizationUnit $_.DistinguishedName -Property DistinguishedName).Name}}

答案1

字符串操作是你的朋友。

假设:

$dn = "CN=ComputerName,OU=OU1,OU=OU2,OU=OU3,DC=domain,DC=org"

然后:

$OU = $dn.Split(',')[1].Split('=')[1]

它的作用是:

  • 在每个“,”处拆分“dn”字符串
  • 取第二个元素(“OU=OU1”)
  • 在每个“=”处拆分
  • 取第二个元素
  • 将结果赋给变量‘$OU’

最后,变量 $OU 包含对象所在路径中第一个 OU 的名称(“OU1”)。

是的,您也可以在格式化输出时使用它:

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

相关内容