Active-Directory
使用 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}}
字元串操作是你的朋友。
假設:
$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]}}