2015-12-11 4 views
1

Это то, что я получил:Создание динамических членов PSObject

Import-Module ActiveDirectory 

$objectCollection = @() 
$groups = (Get-ADGroup -Filter *) 

foreach ($group in $groups) { 
    $groupName = ($group.SamAccountName) 

    $object = (New-Object –Type PSObject) 
    Add-Member -InputObject $object -MemberType NoteProperty –Name ($groupName) –Value "" 

    $groupMembers = (Get-ADGroupMember -Identity "$groupName" -Recursive | 
     Select-Object -ExpandProperty Name) 
    $object.$groupName = $groupMembers 

    $objectCollection += $object 
} 

$objectCollection | Export-Csv -Path C:\Users\administrator\Desktop\test.csv ` 
    -Encoding UTF8 -Delimiter ";" -NoTypeInformation 

Цель с этим сценарием является создание CSV файл, в котором имя AD группа заголовок в одном столбце AN тогда все члены из группа, перечисленная ниже в отдельных строках. Следующая группа находится в новом столбце с именем AD-группы в качестве заголовка и т. Д.

Обычно я создаю столько членов, сколько мне нужно, но на этот раз я хочу, чтобы он был динамичным для количества групп и сценарий выше показывает только первую группу в массиве $ groups.

Любая помощь приветствуется, спасибо заранее!

+0

Возможный дубликат [Изменить сценарий для экспорта группы и вложенные объекты по-разному] (http://stackoverflow.com/questions/33649558/change-the-script-to-export-groups-and-inested-objects-differently) – PetSerAl

ответ

0

Наличие каждой группы в отдельном столбце в файле CSV кажется мне нелогичным; по одному на каждую строку ИМХО было бы лучше (и проще).

Вот как я бы это сделать:

Import-Module ActiveDirectory 

Get-ADGroup -Filter * | ForEach-Object { 

    [PSCustomObject]@{  
     Name = $_.samAccountName 
     Members = (Get-ADGroupMember $_ -Recursive | Select-Object -ExpandProperty Name) -join "," 
    } 
} | Export-Csv -Path "C:\Users\administrator\Desktop\test.csv" -Encoding UTF8 -Delimiter ";" -NoTypeInformation 

Выход:

"Name";"Members" 
"Administrators";"Administrator,..." 
"Domain Users";"Administrator,TestUser,..." 
+0

Спасибо за ответ соды. Это отлично работает и сделает это для меня, но было бы неплохо сделать это, как я упоминал выше, а также (по одному столбцу на группу), если это возможно. Cheers –

+0

Могу ли я узнать, для чего этот файл будет использоваться? Я могу помочь создать электронную таблицу Excel в нужном вам формате, но это было бы слишком сложно с CSV-файлом (на мой взгляд). – sodawillow

+0

Это для перехода из существующего домена AD (DC) в новый, и поскольку существует много «мусорных групп» и другая информация, которая больше не полезна, я не хочу делать 1-к- 1. Я думал, что csv-файл со всеми группами пользователей +, разделенных столбцом, будет легче импортировать в новый домен (DC) (просто удалите столбцы, которые я больше не хочу), но я могу ошибаться. –

Смежные вопросы