admin / 03.09.2018
Содержание
Получить список группы по маске:
Import-Module ActiveDirectory Get-ADGroup -Filter {name -like «*Workstation Admins»} | select name
Получить список членов AD группы, которые удовлетворяют критерию (содержат в своем названии search_matching_rule):
Import-Module ActiveDirectory $oulist = Get-ADGroup «AD_Group_name» -Properties * | select -expandproperty memberof | where {$_ -match ‘search_matching_rule’} $oulist | % { $_ -split ‘,’,2 | select -first 1 } $oulist
Получение имени менеджера сотрудника и его телефонного номера:
Import-Module ActiveDirectory $user = Read-Host -Prompt «Enter username» -ErrorAction Stop $managerdn = (Get-ADUser $user -Properties *).manager $man = $managerdn -split ‘,’,3 | select -first 2 $manfullname = $man[0].trim(«CN=\»)+ «,» + $man[1] $user+»‘s manager is » + $manfullname $mgrusrname = Get-ADUser -Filter {name -like $manfullname} | select -ExpandProperty samaccountname $mgrddi = Get-ADUser $mgrusrname -Properties telephoneNumber| select -ExpandProperty telephoneNumber $manfullname+»‘s DDI number is «+$mgrddi $mgrddi.substring(10)
Выгрузка email для списка аккаунтов:
Import-Module ActiveDirectory $users = get-content -Path (Read-Host -Prompt «Path to TXT file with users» -ErrorAction Stop) foreach($user in $users) { Get-ADUser $user -Properties mail | select -ExpandProperty mail | Out-File D:\AD\user_list.txt -append }
Включить аккаунты пользователей из списка:
Import-Module ActiveDirectory $users = get-content -Path (Read-Host -Prompt «Path to TXT file with users» -ErrorAction Stop) foreach($uname in $users) { Get-ADUser -Identity $uname -Properties enabled | select samaccountname >> c:\Temp\list.txt }
Популярность: 1%
Бывает, что возникает необходимость привести записи о пользователях в Active Directory к некоему стандарту. У нас есть однотипные логины (user0001, user0002, user0003 и так далее) и требуется к каждой записи пользователя добавить фамилию, имя, адрес электронной почты, телефон стационарный, телефон мобильный, должность, отдел, название компании. При большом количестве пользователей удобнее вносить данные в таблицу Excel.
Пример исходного файла. По образу и подобию заполняем таблицу.
После того, как мы добавили всех пользователей необходимо сохранить файл в формате, пригодном для экспорта в Active Directory – файл csv. Выбираем “Сохранить как” и в типе фала указываем CSV (MS-DOS). В результате будет сохранен файл CSV с точкой с запятой (” ; “) в виде разделителя.
Чтобы текст на русском языке перенесся в AD правильно, кодировку файл нужно преобразовать в UTF-8 .
Удобнее это делать в программе Notepad++.
Сохраняем файл. Теперь передадим полученный файл скрипту. Создадим еще один файл с таким cодержанием:
$File = import-csv C:\temp\users.csv -delimiter «;» foreach ($User in $file) { $samAccountName = $user.name $email= $user.mail Get-ADUser -LDAPFilter «(samAccountName=$samAccountName)» | Set-aduser -surname $user.surname -givenname $user.givenname -title $user.Title -Department $user.department -Company $user.company -EmailAddress $email -OfficePhone $user.OfficePhone -mobile $user.mobile }
В первой строке прописываем путь к своему сохраненному файлу csv. Сохраним под именем, например, test.ps1 на диске С.
Замечание. Для серверов Windows 2008/2008R2 нужно добавить в начало еще одну строку: import-module activedirectory.
На контроллере домена стартуем powershell и запускаем скрипт.
После выполнения скрипта данные из нашего файла csv пропишутся в Active Directory.
Тематические термины: Active Directory, Powershell
Без фильтра:
С фильтром:
Get-AdGroup -filter * | Where {$_.name -like "*free*"} | fl name
* будут выбраны все группы, в названии которых встречается free.
Подробная информация о группе
Get-ADGroup "Domain Users" -Properties *
* где ключ -Properties * покажет информацию о всех атрибутах группы.
Показать только SID и GUID группы:
Get-ADGroup "Domain Admins" | ft ObjectGUID, SID
Перечень членов групп с базовой информацией о каждом пользователе:
Get-ADGroupMember -Identity Administrators
Вывести на экран только имена пользователей:
Get-ADGroupMember -Identity Administrators | ft name
Рекурсивный запрос:
Get-ADGroupMember -Identity Administrators -Recursive | ft name
* в данном примере используется ключ Recursive — это позволяет вывести на экран не только членов группы Administrators, но и членов групп, которые входят в эту группу.
Вывести членов групп с подробной информацией по каждому из них:
Get-ADGroupMember -Identity "Users" | foreach { Get-ADUser $_ -Properties * }
Расчет выполняется методом Count:
(Get-ADGroupMember -Identity Administrators).Count
Задача немного обратная — работаем с пользователем и отображаем список групп, в которые он входит:
Get-ADUser Administrator -Properties Memberof | Select -ExpandProperty memberOf
Имеются ввиду группы, в которых нет ни одного пользователя:
Get-ADGroup -filter * | where {-Not ($_ | Get-ADGroupMember)} | Select Name
Add-ADGroupMember "Domain Admins" dmosk
* в данном примере пользователь dmosk будет добавлен в группу Domain Admins.
New-ADGroup -GroupScope DomainLocal -Path "OU=Группы,DC=dmosk,DC=local" -Name "Отдел строительства космических кораблей"
* где GroupScope DomainLocal задает локальную область действия; Path определяет размещение группы в дереве Active Directory.
Remove-ADGroupMember -Confirm:$false -Identity "Domain Users" -Members dmosk
* удаляем пользователя dmosk из группы Domain Users. Ключ -Confirm:$false используется для автоматического подтверждения действия (система не станет запрашивать, точно ли Вы хотите удалить пользователя из группы).
# Серверы# Windows# Powershell# Active Directory
Да Нет
Задача — добавить одному пользователю Active Directory несколько групп из файла.
Если пользователь уже добавлен в какие то группы из списка(вылезет ошибка в процессе) — скрипт продолжит выполнение дальше.
Get-Content "C:\scripts\groups.txt" | Add-ADGroupMember -Members "vasiliy"
Задача — добавить нескольким пользователям из списка несколько групп с помощью Powershell.
Решение 1:
Если хоть один пользователь уже будет добавляемой группе, скрипт остановится. Запускать только если в добавляемых группах точно нет этих пользователей!
$users = Get-Content "C:\scripts\users.txt" get-content "C:\scripts\groups.txt" | Add-ADGroupMember -Members $users
Решение 2:
Скрипт добавляет нескольких пользователей в несколько групп. С проверкой существования в этих группах.
Возможны варианты подгрузки данных, как из txt, csv, так и из самого файла.
#### Список групп #### $group = Get-Content "c:\scripts\groups.csv" #$group = Get-Content "C:\scripts\groups.txt" #$group = ‘TestGroup’,’test-group2′ #### Список пользователей #### #Содержимое csv — колонка юзеров с sAMAccountName $users = Import-Csv -Delimiter ";" "c:\scripts\users.csv" -Encoding Default #Если список юзеров будет из скрипта — нужно удалить ".sAMAccountName" ниже в скрипте #$users = ‘user1′,’user2′,’user3’ foreach ($all in $group) { # Поиск всех пользователей в группах из списка и выдёргивание их sAMAccountName $members = @() Get-ADGroupMember -Identity $all | Select-Object -ExpandProperty sAMAccountName | ForEach-Object{ $members += $_ } # Проверка на существование пользователей из списка с группах и добавление их в группы ForEach($user in $users) { If ($members -notcontains $user.sAMAccountName) { Add-ADGroupMember $all -members $user.sAMAccountName $members += $user.sAMAccountName } } }
Запись опубликована автором MishLen в рубрике Powershell, Server 2008 R2, Server 2012 R2 с метками csv, powershell. Добавьте в закладки постоянную ссылку.
FILED UNDER : IT