Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Выгрузка данных из AD: Группа -> Пользователи

Ответить
Настройки темы
PowerShell - Выгрузка данных из AD: Группа -> Пользователи

Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Добрый день!
Подскажите пожалуйста в реализации скрипта, который бы выгружал необходимый мне перечень групп с пользователями.

Использую такую команду:
Код: Выделить весь код
Get-ADGroupMember -Identity "NameGroup" | Select-Object name | Export-Csv C:\SuperScripts\Group.csv -Encoding UTF8 -Delimiter ";"
Для выгрузки содержимого одной группы.
Но необходимо выполнить таким образом, чтобы можно было добавлять в скрипт любое количество групп и получать CSV следующего формата:
------------------------------------------------------------------------------------------------------
NameGr1 -|- NameGr2 -|- NameGr3 -|- NameGr4 -|- NameGr5 -|- NameGr6 -|-
------------------------------------------------------------------------------------------------------
NameUser | NameUser | NameUser | NameUser | NameUser | NameUser |
NameUser | NameUser | NameUser | NameUser | NameUser | NameUser |
NameUser | NameUser | NameUser | NameUser | NameUser | NameUser |
NameUser | NameUser | NameUser | NameUser | NameUser | NameUser |

Отправлено: 13:56, 03-09-2020

 

Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


csv - это строки связанных друг с другом данных, а в вашем примере просто текст столбиками написан
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:21, 03-09-2020 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Busla:
csv - это строки связанных друг с другом данных, а в вашем примере просто текст столбиками написан »
Okay.
Прошу прощения.
На выходе нужно получить CSV-файл следующего содержания:

Код: Выделить весь код
"NameGr1";"NameGr2";"NameGr3";"NameGr4";"NameGr5";"NameGr6"
"NameUser";"NameUser";"NameUser";"NameUser";"NameUser";"NameUser"
"NameUser";"NameUser";"NameUser";"NameUser";"NameUser";"NameUser"
"NameUser";"NameUser";"NameUser";"NameUser";"NameUser";"NameUser"
"NameUser";"NameUser";"NameUser";"NameUser";"NameUser";"NameUser"

Отправлено: 12:58, 04-09-2020 | #3


Ветеран


Сообщения: 3806
Благодарности: 824

Профиль | Отправить PM | Цитировать


JimmLight, речь была о том, что табличная форма представления данных - это не рисование по клеточкам

Отправлено: 13:32, 04-09-2020 | #4


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата JimmLight:
На выходе нужно получить CSV-файл следующего содержания: »
Файл именно такого содержания можно получить путём извращённого программирования ровно в одном случае: если в каждой из NameGr* будет содержаться строго одинаковое количество NameUser'ов, что в реальной жизни не бывает. Надо понимать, что CSV — это фактически плоская база данных.

Отправлено: 16:25, 04-09-2020 | #5


Новый участник


Сообщения: 47
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Файл именно такого содержания можно получить путём извращённого программирования ровно в одном случае: если в каждой из NameGr* будет содержаться строго одинаковое количество NameUser'ов, что в реальной жизни не бывает. Надо понимать, что CSV — это фактически плоская база данных. »
Понял. Жаль.
Нашёл вот такой скрипт, мало ли кому пригодится. Чуть-чуть подредактировал под себя.
Код: Выделить весь код
#// Start of script 
#// Get year and month for csv export file 
$DateTime = Get-Date -f "yyyy-MM" 
 
#// Set CSV file name 
$CSVFile = "C:\AD_Group"+$DateTime+".csv" 
 
#// Create emy array for CSV data 
$CSVOutput = @() 
 
#// Get all AD groups in the domain 
$ADGroups = Get-ADGroup -Filter * -SearchBase "OU=new_group,DC=domain,DC=ns"
 
#// Set progress bar variables 
$i=0 
$tot = $ADGroups.count 
 
foreach ($ADGroup in $ADGroups) { 
    #// Set up progress bar 
    $i++ 
    $status = "{0:N0}" -f ($i / $tot * 100) 
    Write-Progress -Activity "Exporting AD Groups" -status "Processing Group $i of $tot : $status% Completed" -PercentComplete ($i / $tot * 100) 
 
    #// Ensure Members variable is empty 
    $Members = "" 
 
    #// Get group members which are also groups and add to string 
    $MembersArr = Get-ADGroup -filter {Name -eq $ADGroup.Name} | Get-ADGroupMember | select Name, objectClass, distinguishedName 
    if ($MembersArr) {  
        foreach ($Member in $MembersArr) {  
            if ($Member.objectClass -eq "user") { 
                $MemDN = $Member.distinguishedName 
                $UserObj = Get-ADUser -filter {DistinguishedName -eq $MemDN} 
                if ($UserObj.Enabled -eq $False) { 
                    continue 
                } 
            } 
            $Members = $Members + "," + $Member.Name  
        } 
        #// Check for members to avoid error for empty groups 
        if ($Members) { 
            $Members = $Members.Substring(1,($Members.Length) -1) 
        } 
    } 
 
    #// Set up hash table and add values 
    $HashTab = $NULL 
    $HashTab = [ordered]@{ 
        "Name" = $ADGroup.Name 
        "Category" = $ADGroup.GroupCategory 
        "Scope" = $ADGroup.GroupScope 
        "Members" = $Members 
    } 
 
    #// Add hash table to CSV data array 
    $CSVOutput += New-Object PSObject -Property $HashTab 
} 
 
#// Export to CSV files 
$CSVOutput | Sort-Object Name | Export-Csv $CSVFile -Encoding UTF8 -Delimiter ";"
 
#// End of script

Отправлено: 06:34, 07-09-2020 | #6


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


Цитата JimmLight:
CSV следующего формата »
Интересно, для какой цели требуется именно такое представление этих данных

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 13:14, 07-09-2020 | #7


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


DJ Mogarych, для начальства, как правило.

Отправлено: 20:47, 07-09-2020 | #8


Аватара для DJ Mogarych

fascinating rhythm


Moderator


Сообщения: 6491
Благодарности: 1465

Профиль | Отправить PM | Цитировать


...которое и само не знает, зачем это ему в таком виде.

-------
Powershell 7.x | Powershell 5.1 | ffmpeg (docs)


Отправлено: 21:29, 07-09-2020 | #9



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - Выгрузка данных из AD: Группа -> Пользователи

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - [решено] Выгрузка из AD Tim_user Скриптовые языки администрирования Windows 2 25-07-2016 11:38
PowerShell - [решено] Выгрузка пользователей из CSV в AD Hortas Скриптовые языки администрирования Windows 4 19-05-2016 12:40
PowerShell - [решено] Выгрузка данных о пользователях из AD Elven Скриптовые языки администрирования Windows 5 17-12-2015 16:21
VBS/WSH/JS - выгрузка из AD информации пользователя Uranich Скриптовые языки администрирования Windows 1 14-02-2013 16:01
Выборочная загрузка и выгрузка данных из формы в таблицу MySQL dima1981 Вебмастеру 8 25-08-2008 18:02




 
Переход