![Как изменить родительский контейнер в PowerShell?](https://rvso.com/image/770129/%D0%9A%D0%B0%D0%BA%20%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C%20%D1%80%D0%BE%D0%B4%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D1%81%D0%BA%D0%B8%D0%B9%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%B9%D0%BD%D0%B5%D1%80%20%D0%B2%20PowerShell%3F.png)
Мне нужно извлечь всех пользователей 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
... и т. д.