Управление локальными пользователями и группами с помощью PowerShell. Список пользователей в powershell


PowerShell: Get-ADUser получение информации о пользователях Active Directory

Не секрет, что начиная с первой версии PowerShell, Microsoft пытается сделать из него основной инструмент администрирования Windows. И во многом это получается! Сегодня на простых примерах, мы покажем возможности PowerShell, которые можно использовать для получения различной информации о пользователях Active Directory и их атрибутах.

Примечание. Ранее для получения информации об атрибутах учетных записей пользователей AD приходилось использовать различные инструменты: консоль ADUC (в том числе сохраненные запросы AD), vbs скрипты, утилиту dsquery и т.п. Выбор инструмента обычно основывался на поставленной задачи и способностях администратора в программировании.

В PowerShell 2.0 появился специальный модуль для работы с Active Directory — Active Directory Module for Windows PowerShell (представлен в Windows Server 2008 R2), командлеты которого позволяют выполнять различные манипуляции с объектами каталога AD. Для получения информации о пользователях домена Active Directory и их свойствах предназначен командлет Get-ADUser. С помощью командлета Get-ADUser можно получить значение любого атрибута существующей учетной записи пользователя в AD. Кроме того, можно указывать различные критерии выборки и формировать списки пользователей домена и их атрибутов.

В этом примере мы покажем, как с помощью командлета PowerShell Get-ADUser получить информацию, о том, когда последний раз менялся пароля пользователя и когда истекает срок его действия.

Запускаем окно Powershll с правами администратора и импортируем модуль Active Directory командой:

Import-Module activedirectory

Совет. В Windows Server 2012 и выше этот пункт можно пропустить, так как модуль PowerShell Active Directory подключен по-умолчанию.

В клиентских ОС (в той же Windows 10) для работы коммандера Get-AdUser нужно установить соответствующую версию RSAT и включить в панели управления компонент Active Directory Module for Windows PowerShell (Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> AD DS Tools).

Полный список всех аргументов командлета Get-ADUser можно получить так:

help Get-ADUser

Чтобы вывести список всех учетных записей домена, выполним команду:

Get-ADUser -filter *

Важно. Не рекомендуется выполнять эту команду в доменах с большим количеством аккаунтов, т.к. возможно перегрузка контроллера домена, предоставляющего данные.

Формат возвращаемого списка не очень удобен для использования, выводится только некоторые основные 10 из более 120 атрибутов и свойств учетных записей пользователей (DN, SamAccountName, Name, SID, UPN и т.д) кроме того, мы видим, что информация о времени последней смены пароля отсутствует.

Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполним команду:

Get-ADUser -identity tuser -properties *

Итак, мы видим полный список атрибутов пользователя AD и их значений, ассоциированных с учетной записью пользователя. Далее мы перейдем к форматированию вывода командлета Get-ADUser, так, чтобы отображались нужные нам поля. Нас интересуют атрибуты:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires

Выполним команду:

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires

Теперь в данных пользователя есть информация о дате смены пароля и времени, когда он просрочится. Представим информацию в более удобном табличном виде:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Чтобы вывести данные пользователей из определенной OU, воспользуемся параметром SearchBase:

Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Результат выполнения команды можно выгрузить в текстовый файл:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires > C:\temp\users.txt

Или в CSV, который в дальнейшем будет удобно экспортировать в Excel (дополнительно с помощью sort-object отсортируем таблицу по столбцу PasswordLastSet , а также добавим условие where – имя пользователя должно содержать строку «Dmitry»):

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | where {$_.name –like “*Dmitry*”} | sort-object PasswordLastSet | select-object Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires | Export-csv -path c:\temp\user-password-expires-2015.csv

Таким образом, можно построить таблицу с любыми необходимыми атрибутами пользователей Active Directory.

Совет.  Для получения данных о компьютерах Active Directory используется командлет Get-ADComputer.

Для получения списка учетных записей пользователей AD по определенному признаку используется параметр –Filter. В качестве аргументов этого параметра можно указать значение определённых атрибутов пользователей Active Directory, в результате командлет Get-ADUser будет применятся для пользователей, которые попадают под критерии фильтра.

Далее приведем еще несколько полезных вариантов запросов о пользователях Active Directory с помощью различных фильтров. Вы можете их комбинировать для получения необходимого списка пользователей AD:

Вывод пользователей AD, имя которых начинается с Roman:

Get-ADUser -filter {name -like "Roman*"}

Чтобы подсчитать общее количество всех аккаунтов в Active Directory:

Get-ADUser -Filter {SamAccountName -like "*"} | Measure-Object

Список всех активных (не заблокированных) учетных записей в AD:

Get-ADUser -Filter {Enabled -eq "True"} | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table

Список учетных записей с истекшим сроком действия пароля:

Get-ADUser -filter {Enabled -eq $True} -properties passwordExpired | where {$_.PasswordExpired}

Список активных учеток с почтовыми адресами:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table

Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетке в строке) нужно получить телефон пользователя в AD и выгрузить информацию в текстовый csv файл (можно легко импортировать в Esxel).

Import-Csv c:\ps\usernsme_list.csv | ForEach { Get-ADUser -identity $_.user -Properties Name, telephoneNumber | Select Name, telephoneNumber | Export-CSV c:\ps\export_ad_list.csv -Append -Encoding UTF8 }

Следующий пример позволяет выгрузить адресную книгу предприятия в виде csv файла, который в дальнейшем можно импортировать в Outlook или Mozilla Thunderbird:

Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Export-Csv -NoTypeInformation -Encoding utf8 -delimiter "," $env:temp\mail_list.csv

Пользователи, которые не меняли свой пароль в течении последних 90 дней:

$90_Days = (Get-Date).adddays(-90) Get-ADUser -filter {(passwordlastset -le $90_days)}

Чтобы получить фотографию пользователя из Active Directory и сохранить ее в jpg файл:

$user = Get-ADUser winadmin -Properties thumbnailPhoto $user.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte

Список групп, в которых состоит учетная запись пользователя

Get-AdUser winadmin -Properties memberof | Select memberof -expandproperty memberof

winitpro.ru

Получение списка пользователей в группе AD и выгрузка в CSV

В этой статье мы рассмотрим несколько примеров использования PowerShell для получения списка пользователей в различных группах Active Directory. Данная статья должна научить вас получать список учетных записей определенной группы AD и экспортировать полученный список пользователей с различными атрибутами в CSV файл, с которым удобно работать в Excel.

Ранее для построения списка пользователей в группах Active Directory приходилось использовать скрипты VBScript, или утилиты командной строки DSQuery или CSVDE, недостаточно гибкие и удобные.

Для взаимодействия с AD Microsoft разработала специальный модуль Active Directory Module для Windows PowerShell. Впервые данный модуль появился в Windows Server 2008 R2 и для его использования нужно сначала его загрузить в вашу сессию PowerShell командой:

Import-Module ActiveDirectory

В Windows Server 2012 / R2 / Windows Server 2016 этот модуль автоматически устанавливается и загружается при установке на сервере роли ADDS (Active Directory Domain Services), т.е. при повышении сервера до контроллера домена.

В настольных пользовательских операционных системах (Windows 10 / 8 / 7) модуль Active Directory для Windows PowerShell входит в состав RSAT, который нужно скачать, устанавливать и активировать модуль для работы с AD отдельно.

Обратите внимание, что для использования в сессии PowerShell модуля ActiveDirectory не обязательно иметь права администратора домена. Получить информацию о пользователях и группах из AD может любой аутентифицированный пользователь домена.

Для получения информации об учетных записях, которые входят в группу безопасности Active Directory используется командлет Get-ADGroupMember.

Например, чтобы вывести на экран список членов группы Domain Admins, нужно выполнить команду:

Get-ADGroupMember 'Domain Admins'

В том случае, если вы не знаете точного имени группы, можно вывести список всех групп в AD с помощью команды:

Get-ADGgroup -filter * | sort name | select Name

Чтобы отобразить только имена пользователей в группе:

Get-ADGroupMember -Identity 'Domain Admin'| ft name

Если в указанной группе содержатся другие группы AD, для вывода членов группы с учетом вложенных групп нужно использовать параметр Recursive .

Get-ADGroupMember -Identity ‘Domain Admin’ -Recursive | ft name

Переключатель –recursive предписывает команде get-adgroupmember получать список пользователей из каждой вложенной группы и выводить только объекты, не являющиеся контейнерами (пользователей или компьютеры). Т.е. данная команда отобразит даже тех пользователей, которые напрямую не входят в группу.

Можно вывести более подробную информацию об учетных записях в данной группе таким образом:

Get-ADGroupMember -Identity ‘Domain Admin’ | foreach { Get-ADUser $_ -Properties * }

Рассмотрим более сложную конструкцию PowerShell, которая позволяет вывести всех членов определённой доменной группы безопасности с информацией о компании, подразделении и должности с последующей сортировкой и разбивкой на блоки с зависимости от конкретного аттрибута (допустим нам нужно сгруппировать пользователей по полю Компания — company ):

Get-ADGroupMember -Recursive ‘Domain Admin’ | ForEach {Get-ADUser -filter {samaccountname -eq $_.SamAccountName} -Properties displayName, company, title, department} | Sort-Object company,displayName | Format-Table displayName,company,department,title -GroupBy company -AutoSize

Для выгрузки полученного списка в текстовый файл в конце предыдущей команды нужно добавить конвейер:

| Out-File -Width 4000 "C:\TxT\GetUsersADGroupByCompany.txt"

Для выгрузки списка пользователей группы в CSV файл нужно добавить такой конвейер:

| Export-Csv -NoTypeInformation .\GetUsersADGroupByCompany.csv -Encoding Unicode

Можно посчитать общее количество пользователей в группе:

(Get-ADGroupMember -Identity 'Domain Admin').Count

Еще один полезный пример. Попробуем найти все группы AD содержащие в имени шаблон *Manager*, и выведем пользователей, которые входят в эти группы. Чтобы выводить только уникальные объекты, воспользуемся аргументом -uniq.

Get-ADGroup -filter 'SamAccountName -like "*Manager*"' | Get-ADGroupMember -recursive|Select-Object -uniq

Если при выполнении команды Get-ADGroupMember появится ошибка:

Get-ADGroupMember : The specified directory service attribute or value does not exist

Значит в состав группы входят пользователи из других лесов. Командлет Get-ADGroupMember не поддерживает работу с пользователями из разных лесов AD.

Для добавления пользователей в группы AD нужно использовать командлет Add-ADGroupMember.

 

vmblog.ru

Как выгрузить список пользователей из AD через PowerShell

Сегодня мы попробуем выгрузить список все пользователей в отдельный файл из Active Directory. Главным помощником в этом деле у нас будет PowerShell. Всё дело в том, что Microsoft изначально планировала командную консоль PowerShell как основной инструмент для управления серверными компонентами Windows. И на сегодняшний день, когда мы имеем уже версию 2.0, по большому счету, это так и есть.

Ещё в недалеком прошлом, чтобы хоть как-то взаимодействовать с AD, администраторам необходимо было иметь в своем распоряжении либо утилиту dsquery, либо разного рода скрипты или утилиты. Сегодня же начиная с версии Windows Server 2008 R2, мы можем работать с AD через PowerShell. С приходом PowerShell 2.0 для взаимодействия с Active Directory используется специальный модуль Active Directory Module for Windows PowerShell, который содержит в себе необходимый список командлетов. Для наших задач мы будем использовать команду Get-ADUser.

Итак, в зависимости под управлением какой операционной системы мы будем запускать консоль PowerShell, нам необходимо будет выполнить “подготовительные действия”.

1) Если мы работаем из-под Windows Server до версии 2012, то нам необходимо выполнить команду:

  • Import-Module activedirectory – команда для импортирования модуля в AD

Для версий операционной системы от 2012 и выше, данный модуль уже включен по умолчанию.

2) Если мы работаем из под любой клиентской Windows, то на ней должен быть установлен пакет удаленного администрирования RSAT, с проинсталлированным компонентом Active Directory Module for Windows PowerShell.

Стоит отметить, что командлет Get-ADUser рекомендуется выполнять при количестве выгружаемых данных до 1000 пользователей.

Экспортируем пользователей AD при помощи PowerShell в отдельный файл

Для начала вызовем справку для команды Get-ADUser. В результате Вы получите все необходимые команды для дальнейшего администрирования.

  • help Get-ADUser – команда для вызова справки

Чтобы получить в окне PowerShell список всех пользователей со всеми свойствами, необходимо выполнить следующую команду:

  • Get-ADUser -filter * – экспорт списка пользователей AD

Данная выгрузка не совсем информативна и не умещает в окне всю необходимую информацию. Поэтому попробуем сузить поиск и выведем свойства конкретного пользователя с именем user1:

  • Get-ADUser -identity user1 -properties * – экспорт свойств определенного пользователя

А теперь попробуем экспортировать список всех пользователей с их свойствами во внешний txt или csv файл:

  • Get-ADUser -filter * -properties * | Export-csv -path c:\users.csv -encoding Unicode – экспорт пользователей в отдельный файл

Хотелось бы обратить отдельное внимание на ключ -encoding Unicode. Он служит для того, чтобы русская кириллица, после экспорта из AD, могла корректно отображаться в выгруженном файле. Например, через Microsoft Excel мы увидим вопросительные знаки вместо русских букв.

При просмотре файла данные экспортируются в одну строку и тем самым не пригодны для чтения. Чтобы это изменить, нам необходимо выполнить следующие действия:

  • Выделяем в Экселе первый столбец, как показано на скринщоте.
  • Откроем вкладку данные > Текст по столбцам. И в окне мастера выберем параметр – С разделителями.
  • В следующем окне выберем в качестве разделителя Запятую и нажмем > Далее.

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

Нужна помощь в работе с Active Directory?

Предлагаем услуги по обслуживанию серверов на разных условиях:

+7 (965) 254-83-24

self-it.ru

Извлечение списка пользователей AD в CSV (с помошью PowerShell)

Существует несколько относительно честных способов получить список пользователей подразделения AD в CSV. В данном примере рассмотрим один из них, скрипт PowerShell по получению списка пользователей AD:

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher$objSearcher.SearchRoot = "LDAP://ou=Users,ou=Departmets,dc=test,dc=ru"$objSearcher.Filter = "(&(objectCategory=person)(!userAccountControl:1.2.840.113556.1.4.803:=2))"$users = $objSearcher.FindAll()# Количество учетных записей$users.Count $users | ForEach-Object {   $user = $_.Properties   New-Object PsObject -Property @{   Должность = [string]$user.description   Отдел = [string]$user.department   Логин = [string]$user.userprincipalname   Телефон = [string]$user.telephonenumber   Комната = [string]$user.physicaldeliveryofficename   ФИО = [string]$user.cn    }} | Export-Csv -NoClobber -Encoding utf8 -Path  d:\list_users.csv

 

Как видно из скрипта все что нужно сделать это вписать необходимое подразделение, в данном примере это Users в подразделении Departments в домене test.ru. Ниже описаны поля которые мы хотим выгрузить в CSV, а в самом конце путь где будет сохранен файл d:\list_users.csv

Внимание!!! данный скрипт не отобразит более 1000 пользователей.

Для тех кто на- вы с Excel, распишу как добиться нормальной таблицы. Открываем в Excel (в данном примере буду использовать версию 2010)файл list_users.csv, выделяем первый столбец (путем нажатия на А), затем заходим во вкладку "Данные" и нажимаем "Текст по столбцам". Выбираем "с разделителями" и нажимаем "Далее".

После этого в Символе разделителе выбираете- запятая, нажимаем "Далее"

и кнопку "Готов".

В результате получаете таблицу с пользователями подразделения.

Я очень надеюсь, моя статья помогла Вам! Просьба поделиться ссылкой с друзьями:

pk-help.com

Управление группами AD с помощью PowerShell

В этой статье мы рассмотрим возможности PowerShell по управлению группами домена Active Directory. Мы рассмотрим, как создать новую группу в AD, добавить в нее пользователей (или удалить), вывести список пользователей группы и несколько других полезных действия с доменными группами, которые чрезвычайно полезны при повседневном администрировании. Для управления группами AD в модуле PowerShell для Active Directory имеются следующие основные командлеты:

Для использования данных командлетов в вашей сессии PowerShell должен быть загружен специальный модуль взаимодействия с AD — Active Directory Module for Windows PowerShell. Данный модуль впервые был представлен в Windows Server 208 R2. В Windows Server 2012 и выше этот модуль включен по умолчанию. На клиентских компьютерах его можно установить и включить в качестве одного из компонентов RSAT. Проверить, загружен ли модуль можно так:

Get-Module -Listavailable

Как вы видите, модуль ActiveDirectory загружен. Если нет – импортируйте его командой:

Import-Module activedirectory

Полный список команд модуля можно получить так:

Get-Command -Module ActiveDirectory

В модуле всего доступно 147 командлетов, из которых с группами могут работать 11.

Get-Command -Module ActiveDirectory -Name "*Group*"

Вот их список:

  • Add-ADGroupMember
  • Add-ADPrincipalGroupMembership
  • Get-ADAccountAuthorizationGroup
  • Get-ADGroup
  • Get-ADGroupMember
  • Get-ADPrincipalGroupMembership
  • New-ADGroup
  • Remove-ADGroup
  • Remove-ADGroupMember
  • Remove-ADPrincipalGroupMembership
  • Set-ADGroup

New-ADGroup – создаем новую группу AD

Создадим новую группу в указанном контейнере (OU) Active Directory с помощью команды New-ADGroup:

New-ADGroup "TestADGroup" -path 'OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru' -GroupScope Global -PassThru –Verbose

С помощью атрибута Description можно задать описание группы, а с помощью DisplayName изменить отображаемое имя.

Параметром GroupScope можно задать один из следующих типов групп:

  • 0 = DomainLocal
  • 1 = Global
  • 2 = Universal

Создать группу распространения можно так:

New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=Moscow,DC=corp,dc=winitpro,DC=ru' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose

Add-AdGroupMember – добавить пользователей в группу AD

Добавить пользователей в группу Active Directory можно с помощью командлета Add-AdGroupMember. Добавим в новую группу двух пользователей:

Add-AdGroupMember -Identity TestADGroup -Members user1, user2

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

Формат CSV файла такой (список пользователей по одному в строке, имя столбца – users)

Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}

Чтобы получить всех членов одной группы (groupA) и добавить их в другую группу (groupB), воспользуйтесь такой командой:

Get-ADGroupMember “GroupA” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-B” -Members $_}

В том случае, если нужно скопировать в новую группу и членов всех вложенных групп (рекурсивно), нужно воспользоваться такой командой:

Get-ADGroupMember -Identity “GroupA” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupB” -Members $_}

Remove-ADGroupMember – удалить пользователей из группы

Для удаления пользователей из группы AD нужно использовать командует Remove-ADGroupMember. Удалим из группы двух пользователей:

Remove-ADGroupMember -Identity TestADGroup -Members user1, user2

Подтвердите удаление пользователей из группы:

Если нужно удалить из группы пользователей по списку из CSV файла, воспользуйтесь такой командой:

Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}

Get-ADGroup – получить информацию о группе AD

Получить информацию о группе поможет командлет Get-ADGroup:

Get-ADGroup 'TestADGroup'

Даная команда выводит информацию об основных атрибутах группы (DN, тип группы, имя, SID). Чтобы вывести значение всех атрибутов группы домена AD, выполните такую команду:

Get-ADGroup 'TestADGroup' -properties *

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

С помощью командлета Get-ADGroup можно найти все интересующие вас группы по определенному шаблону. Например, нужно найти все группы AD, в имени которых содержится фраза admins :Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table

Get-ADGroupMember – вывести список пользователей группы AD

Вывести на экран список пользователей группы:

Get-ADGroupMember 'TestADGroup'

Чтобы оставить в результатах только имена пользователей, выполните:

Get-ADGroupMember 'TestADGroup'| ft name

Если в данную группу включены другие группы домена, чтобы вывести полный список членов, в том числе всех вложенных групп, воспользуйтесь параметром Recursive.

Get-ADGroupMember ‘server-admins' -recursive| ft name

Чтобы выгрузить список учетных записей, состоящих в определённой группе в CSV файл (для дальнейшего использования в Excel), выполните такую команду:

Get-ADGroupMember ‘server-admins' -recursive| ft samaccountname| Out-File c:\ps\admins.csv

Чтобы добавить в текстовый файл данные учетных записей пользователей в AD, воспользуемся командлетом Get-ADUser. Например, помимо учетной записи нужно вывести должность и телефон пользователя группы:

Get-ADGroupMember -Identity ’server-admins’ -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }

Посчитать количество пользователей в группе можно так:

(Get-ADGroupMember -Identity 'domain admins').Count

Оказалось, что в группе «domain admins» у нас состоит 7 учетных записей администраторов.

Чтобы найти список пустых групп в определенном OU, воспользуйтесь такой командой:

Get-ADGroup -Filter * -Properties Members -searchbase “OU=Moscow,DC=corp,dc=winitpro,DC=ru”  | where {-not $_.members} | select Name

winitpro.ru

Получение пользователей группы AD из PowerShell

Для начала нам необходимо убедиться, что у нас установлена фича сервера для работы с AD из PowerShell. Сделать это достаточно легко:

get-module -ListAvailable

И если вы не видите модуля ActiveDirectory, то его придется установить:

Import-Module ServerManagerAdd-WindowsFeature RSAT-AD-PowerShellПосле это го в список модулей должен выглядеть как то так:PS C:\Windows\system32> get-module -ListAvailable

ModuleType Name ExportedCommands ---------- ---- ---------------- Manifest ActiveDirectory {} Manifest ADRMS {}  

Вот, собственно после этого и начинается написание скрипта:

Import-Module ActiveDirectory#получить информацию о доменеGet-ADDomain#получаем информацию о группе$group = Get-AdGroup <имя группы без кавычек, например: Administrators>#получаем пользователей из выбранной группыGet-ADUser -Filter {MemberOf -recursivematch $group.DistinguishedName}

Согласитесь достаточно просто? Причем, я не являюсь администратором домена, на доступном мне сервере нет контроллера домена, но все работает.Кстати, никто нам не мешает, посмотреть по пользователю любые свойства доступные в AD. Например:Get-ADUser -Filter {Surname -eq 'Лосев'} -properties * | Select CN, Created

CN Created -- ------- Лосев Алексей Юрьевич 08.08.2011 14:55:04Как то вот так.

losev-al.blogspot.com

Управление локальными пользователями и группами с помощью PowerShell

Относительно недавно Microsoft добавила в Windows стандартный PowerShell модуль для управления локальными пользователями и группами под названием Microsoft.PowerShell.LocalAccounts. Ранее этот командлет нужно было качать и импортировать в PowerShell отдельно. В Windows Server 2016 и Windows 10 модуль LocalAccounts теперь доступен по умолчанию, т.к. он входит в состав PowerShell 5.1. В более ранние версии Windows для использования модуля управления локальными аккаунтами нужно установить Windows Management Framework 5.1.

Модуль LocalAccounts

Всего в модуль входит 15 командлетов. Полный список командлетов в модуле LocalAccounts можно вывести так:

Get-Command -Module Microsoft.PowerShell.LocalAccounts

  • Add-LocalGroupMember – добавить пользователя в локальную группу
  • Disable-LocalUser – отключить локальную учетную запись
  • Enable-LocalUser – включить учетную запись (разблокировать)
  • Get-LocalGroup – получить информацию о локальной группе
  • Get-LocalGroupMember – получить список пользователей в локальной группе
  • Get-LocalUser – получить информацию о локальном пользователе
  • New-LocalGroup – создать новую локальную группы
  • New-LocalUser – создать пользователя
  • Remove-LocalGroup – удалить группу
  • Remove-LocalGroupMember – удалить члена из группы
  • Remove-LocalUser – удалить локального пользователя
  • Rename-LocalGroup – переименовать группу
  • Rename-LocalUser – переименовать пользователя
  • Set-LocalGroup – изменить группу
  • Set-LocalUser – изменить пользователя

Далее рассмотрим несколько типовых задач по управлению локальными пользователями и группами на компьютере с Windows 10 при помощи PowerShell командлетов из состава модуля LocalAccounts.

Управление локальными пользователями Windows с помощью PowerShell

Выведем список имеющихся на компьютере локальных пользователей Windows:

Get-LocalUser

Как вы видите, на компьютере имеется 7 локальных учетных записей, 3 из которых отключены (Enabled=False).

Чтобы вывести все свойства конкретной локальной учетной записи (аналог комадлета для получения иформации о пользователях из AD — Get-ADUser), выполните:

Get-LocalUser -Name ‘root’ | Select-Object *AccountExpires :Description :Enabled : TrueFullName :PasswordChangeableDate : 4/23/2018 11:23:48 PMPasswordExpires :UserMayChangePassword : TruePasswordRequired : FalsePasswordLastSet : 4/22/2018 11:23:48 PMLastLogon : 7/15/2018 9:04:32 PMName : rootSID : S-1-5-21-3650440056-3766451173-3310994491-1001PrincipalSource : LocalObjectClass : User

Чтобы получить конкретный атрибут пользователя, например, время последней смены пароля, выполните:

Get-LocalUser -Name ‘root’ | Select-Object PasswordLastSet

Создадим нового локального пользователя с помощью командлета New-LocalUser. Данный командлет позволяет создать следующие типы учетных записей:

  • Локальные учетных записи Windows
  • Учетные записи Microsoft
  • Учетные записи Azure AD

При создании учётной записи пользователя с помощью New-LocalUser нельзя указывать ее пароль в качестве аргумента Password в открытом виде. Предварительно пароль нужно сконвертировать в безопасную строку, запросив пароль интерактивно:

$UserPassword = Read-Host –AsSecureString

Или указав пароль непосредственно в консоли PoSh:

$UserPassword = ConvertTo-SecureString "Pa$$word!!" -AsPlainText -Force

New-LocalUser "SIvanov" -Password $UserPassword -FullName "Sergey Ivanov" -Description "Local Account dlya udalennogo vhoda"

Для создания пользователя в домене AD нужно использовать командлет New-ADUser.

Чтобы изменить пароль пользователя, воспользуйтесь командой Set-LocalUser (предполагаем, что вы уже преобразовали новый пароль в SecureString):

Set-LocalUser -Name sivanov -Password $UserPassword –Verbose

Чтобы установить флаг «Срок действия пароля пользователя не истекает» («Password never expired»), выполните:

Set-LocalUser -Name sivanov –PasswordNeverExpires $False

Как видите, вам не нужно преобразовывать значение UserAccountControl, как при управлении свойствами учётной записи в AD.

Как вы помните, вы можете авторизоваться в Windows 10 под учетными записями Microsoft. Если нужно создать нового пользователя, связанного с аккаунтом Microsoft, выполните следующую команду (обратите внимание, что пароль аккаунта указывать не нужно, т.к. он хранится в Microsoft).

New-LocalUser -Name "MicrosoftAccount\[email protected]" -Description "Это учетка в Microsoft"

Для создания локальной учётной записи, которая связана с вашим аккаунтом в Azure AD (например, вы пользуетесь Office 365), выполните команду:

New-LocalUser -Name "AzureAD\[email protected]" -Description "Это учетка в Azure AD"

Чтобы удалить этого локального пользователя, выполните:

Remove-LocalUser -Name sivanov -Verbose

Управление локальными группам Windows с помощью PowerShell

Теперь выведем список локальных групп на компьютере:

Get-LocalGroup

Создадим новую группу:

New-LocalGroup -Name 'RemoteSupport' -Description 'Remote Support Group'

Теперь добавим в новую группу несколько локальных учетных записей и группу локальных администраторов:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('SIvanov','root', 'Администраторы') –Verbose

Если ваш компьютер входит в домен, то вы можете добавить в локальную группы и доменные аккаунты или группы. Для этого их нужно указывать в формате DomainName\user2 или DomainName\’domain admins’.

Также вы можете добавить пользователя в группы с помощью следующего конвейера (добавим пользователя в локальные администраторы):

Get-Localuser -Name 'sivanov' | Add-LocalGroupMember -Group 'Administrators'

Выведем список пользователей в локальной группе:

Get-LocalGroupMember -Group 'RemoteSupport'

Как вы видите, мы используем только локальные учетные записи (PrincipalSource – Local). Однако здесь могут быть доменные аккаунты (domain), учетные записи Microsoft (MicrosoftAccount) и аккаунты из Azure (AzureAD).

Чтобы вывести список групп, в которых состоит конкретный пользователь, придется перебрать все локальные группы на компьютере:

foreach ($LocalGroup in Get-LocalGroup){if (Get-LocalGroupMember $LocalGroup -Member 'sivanov' –ErrorAction SilentlyContinue){$LocalGroup.Name}}

Чтобы убрать пользователя из группы, выполните:

Remove-LocalGroupMember -Group 'RemoteSupport' –Member 'sivanov'

Для управления локальными пользователями на удаленном компьютере нужно сначала подключится к нему через WinRM командлетами Invoke-Command или Enter-PSSession.

Например, нам нужно собрать список учетных записей в локальной группе на удаленных компьютерах:

$s = new-pssession -computer pc01,pc02,pc03invoke-command -scriptblock {Get-LocalGroupMember -Group 'RemoteSupport'} -session $s -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"

winitpro.ru