Active-Directory

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

  • April 9, 2020

我想獲取我們 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}}

字元串操作是你的朋友。

假設:

$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]}}

引用自:https://serverfault.com/questions/1011657