Назад | Перейти на главную страницу

Извлеките имя подразделения с помощью Get-ADOrganizationUnit и Get-ADComputer Powershell.

Я хочу получить список серверов в нашей Active Directory, я также хочу указать их IP, ОС и организационное подразделение, к которому они принадлежат. Это прямая родительская OU, к которой принадлежат мои серверы

Я придумал следующий сценарий PS, и он почти удовлетворяет то, что мне нужно:


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

Однако имя OU на самом деле является 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]}}