Я хочу получить список серверов в нашей 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]
Что это значит:
В конце переменная $ OU содержит имя первого OU в пути, где находится объект («OU1»).
И да, вы также можете использовать это при форматировании вывода:
Get-ADComputer -filter * -Properties ipv4Address, OperatingSystem,DistinguishedName | select-object Name, ipv4Address, OperatingSystem, @{label='OU';expression={$_.DistinguishedName.Split(',')[1].Split('=')[1]}}