Как изменить родительский контейнер в PowerShell?

Как изменить родительский контейнер в PowerShell?

Мне нужно извлечь всех пользователей AD со всей информацией о них, добавив поле с обратным полем «родительский контейнер».

Например:

Фактическое поле родительского контейнера: "OU=Users,OU=Area,DC=Company,DC=com"

Требуемый формат родительского контейнерного поля: Company.com\Area\Users

И вот код, который у меня сейчас есть

Get-ADUser -Filter * -Properties * | select *,@{l='Parent';e={([adsi]"LDAP://$($_.DistinguishedName)").Parent}} | export-csv \\server\folder\usersADps.csv

Спасибо

решение1

Некоторое время назад я написал модуль PowerShell, который инкапсулирует функциональностьИмяПеревестииИмя путиCOM-объекты для простого использования в PowerShell:

https://github.com/Bill-Stewart/PowerShell-ADName

Установив этот модуль, вы можете написать такой код:

Get-ADUser -LDAPFilter "(name=*)" |
  Select-Object @{Name = "Path"; Expression = {$_.DistinguishedName | Get-ADName -Format Parent | Convert-ADName Canonical}},
  Name

В этом примере используется Select-Objectдля созданиярасчетное свойствоназывается Path, который представляет собой путь AD каждого объекта, выраженный в формате канонического имени.

Внутри Expression =скриптблока (скриптблок(код в фигурных { }скобках) в этом примере используется:

  • $_.DistinguishedName- это DistinguishedNameсобственность каждого пользователя, переданная изGet-ADUser
  • Get-ADName -Format Parent- родительское местоположение выдающегося имени
  • Convert-ADName Canonical- родительский путь в каноническом формате

Эта команда создает вывод со свойствами Pathи Name; например:

Path                     Name
-----------------------  ---------
myorg.local/Container A  Ken Dyer
myorg.local/Container B  Lynn Dyer

... и т. д.

Связанный контент