Get-aduser
Содержание:
- Создание пользователей AD из CSV в Powershell New-ADUser
- Получение информации
- Установка модуля управления обновлениями PSWindowsUpdate
- Просмотр
- Управление локальными пользователями Windows с помощью PowerShell
- Загрузка фото пользователя AD через Exchange
- Installing AD PowerShell Module on Windows 10
- Как узнать срок действия пароля пользователя в Active Directory?
- Создание пользователей AD из CSV в Powershell New-ADUser
- Используем BITS для асинхронного копирования больших файлов по сети
Создание пользователей AD из CSV в Powershell New-ADUser
Я создал в Excel такой файл и сохранил как CSV:

Для того что бы импортировать файл есть командлет Import-Csv
Нужно обратить внимание какой разделитель (делимитер) в файле и у вас в системе. Увидеть это можно так:
Если есть отличия, то тогда в команде импорта нужно добавить ключ ‘-Delimiter’ и указать тот, который в файле. Отличия будут, например, если файл был создан в русской локализации, а импорт идет на сервере с английской.
Импорт и создание пользователей делается так:
Сложение в Path сделано для демонстрации такой возможности и не является обязательным.
У меня так же была ошибка:
- new-aduser указанное имя не является корректным именем пользователя
- New-ADUser : The object name has bad syntax
- New-ADUser : Directory object not found
Причины возникновения не совсем ясны. Хоть ошибка и указывала на начало командлета New-AdUser, но проблема была в Path. Из рекомендаций были убрать в CSV файле пустые строки, проверить, что у нас нет путаницы с кавычками ( что мы не используем » ‘ в одном объекте), а так же вынести значение Path вне цикла в переменную. Мне помогло, как я понял, замена кавычек в ключе, экранирование скобками и удаление пробелов в этом ключе.
Само собой мы можем в Csv файле создать больше колонок. Например мы можем там создать и пароль, что бы у всех пользователей он был разный, но нужно будет обязательно сконвертировать его через ConvertTo-SecureString.
Если вы не уверены в том, что все данные корректны, то можете добавить ключ -WhatIf, который покажет результаты выполнения команды, но не выполнит ее физически.
Я использовал следующий запрос, чтобы перечислить пользователей на сервере Windows 2008, но не удалось и получил следующую ошибку.
Исключение приводится ниже. Может ли кто-нибудь помочь мне решить эту проблему?
4 ответа
69 CB.
Если присутствует модуль ActiveDirectory, добавьте
перед вашим кодом.
Чтобы проверить, существует ли попытка:
Модуль ActiveDirectory по умолчанию присутствует в Windows Server 2008 R2, установите его следующим образом:
Чтобы он работал, вам нужно как минимум один DC в домене, как Windows 2008 R2, и на нем установлены веб-службы Active Directory (ADWS).
В Windows Server 2008 читайте здесь, как его установить
25 Dan B
Отметьте здесь о том, как добавить модуль activedirectory, если нет по умолчанию. Это можно сделать на любом компьютере, а затем он позволит вам получить доступ к вашему активному каталогу «Управление доменом».
Чтобы предотвратить проблемы с устаревшими ссылками (я обнаружил, что блоги MSDN исчезают без причины в прошлом), в сущности для Windows 7 вам необходимо скачать и установить Инструменты удаленного администрирования сервера (KB958830). После установки выполните следующие действия:
- Открыть панель управления → Программы и компоненты → Включение/выключение функций Windows
- Найдите «Средства администрирования удаленного сервера» и разверните его
- Найдите «Инструменты администрирования ролей» и разверните его
- Найдите «AD DS и AD LDS Tools» и разверните его
- Установите флажок «Модуль Active Directory для Windows PowerShell».
- Нажмите «ОК» и разрешите Windows установить эту функцию.
Серверные версии Windows должны быть в порядке, но если вам не нужно загружать и устанавливать службу шлюза управления Active Directory. Если какая-либо из этих ссылок перестанет работать, вы все равно сможете найти статью в KB или загрузить имена и найти их.
Если вы не видите Active Directory, это связано с тем, что вы не установили пользователей AD LS и функцию компьютера. Перейдите в раздел Управление — добавьте роли и функции. В разделе «Мастер добавления ролей и возможностей» на вкладке «Возможности» выберите «Средства администрирования удаленного сервера», выберите «Инструменты администрирования роли» — выберите «Инструменты AD DS и DF LDS».
После этого вы можете увидеть пакет PS Active Directory.
Задача — добавить пользователя в AD через PowerShell windows 2008 serverДля того чтобы добавить пользователя используем команду new-QADUserТак как оснастка у меня не была установлена то сначала я получил ошибку
Имя «New-QADuser» не распознано как имя командлета, функцииБ файла скрипта или выполняемой программы
set-Location c:add-PSSnapin quest.activeroles.admanagementget-PSSnapin | ft name
Получение информации
1. Список всех групп
Без фильтра:
Get-AdGroup -filter *
С фильтром:
Get-AdGroup -filter * | Where {$_.name -like «*free*»} | fl name
* будут выбраны все группы, в названии которых встречается free.
2. Подробная информация о группе
Get-ADGroup «Domain Users» -Properties *
* где ключ -Properties * покажет информацию о всех атрибутах группы.
Показать только SID и GUID группы:
Get-ADGroup «Domain Admins» | ft ObjectGUID, SID
3. Посмотреть членов группы
Перечень членов групп с базовой информацией о каждом пользователе:
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
5. В каких группах состоит пользователь
Задача немного обратная — работаем с пользователем и отображаем список групп, в которые он входит:
Get-ADUser Administrator -Properties Memberof | Select -ExpandProperty memberOf
6. Список пустых групп
Имеются ввиду группы, в которых нет ни одного пользователя:
Get-ADGroup -filter * | where {-Not ($_ | Get-ADGroupMember)} | Select Name
7. Cписок пользователей, которые не входят в конкретную группу
Get-ADuser -Filter * -Properties MemberOf | where { -Not ($_.MemberOf -match «Managers») } | Select Name
* в данном примере мы увидем список пользователей, которые не входят в группу Managers.
Установка модуля управления обновлениями PSWindowsUpdate
Если вы используете Windows 10, вы можете установить модуль PSWindowsUpdate из онлайн репозитория через менеджер пакетов PackageManagement всего одной командой:
В моем случае появилось предупреждение, что версия PSWindowsUpdate 1.5.2.6 уже установлена. Чтобы установить более новую версию, нужно запустить команду:
После окончания установки нужно проверить наличие пакета:
Если у вас установлена более старая версия Windows (Windows 7/8.1/ Windows Server 2008 R2/ 2012 R2) или отсутствует прямой доступ в Интернет, вы можете установить модуль PSWindowsUpdate вручную.
Модуль PSWindowsUpdate можно установить на любые поддерживаемые версии Windows, начиная с Vista / Windows Server 2008 с установленным PowerShell 2.0 (но рекомендуется PowerShell версии 3.0 и выше).
Скачайте последнюю версию модуля PSWindowsUpdate со страницы: https://gallery.technet.microsoft.com/scriptcenter/2d191bcd-3308-4edd-9de2-88dff796b0bc и скачанный файл;Обратите внимание, что в галерее скриптов TechNet доступна только старая версия модуля – v 1.5.6. В то время как менеджер пакетов NuGet устаналивает из PowershellGallery версию PSWindowsUpdate 2.1.1.2
В разных версиях модуля доступные командлеты и параметры могут отличаться.
Распакуйте архив с модулем в один из каталогов или (при постоянном использовании модуля это лучший вариант);
Разрешите выполнение PS1 скриптов:
Теперь вы можете импортировать модуль в свою сессию PowerShell: Примечание. В Windows 7 / Server 2008 R2 при импорте модуля PSWindowsUpdate вы можете столкнутся с ошибкой вида: Имя «Unblock-File» не распознано как имя командлета. Дело в том, что в модуле используются некоторые функции, которые появились только в PowerShell 3.0. Для использования этих функций вам придется обновить PowerShell, либо вручную удалить строку | Unblock-File из файла PSWindowsUpdate.psm1
.
После установки модуля PSWindowsUpdate на своем компьютере вы можете удаленно установить его на другие компьютеры или сервера с помощью командлета . Например, чтобы скопировать PSWindowsUpdate модуль с вашего компьютера на два удаленных сервера, выполните команды (нужен доступ к удаленным серверам по протоколу SMB, порт TCP 445):
Чтобы сохранить модуль в сетевой каталог для дальнейшего импорта модуля на других компьютерах, выполните:
Просмотр
Информация о пользователях
1. Список пользователей домена:
> Get-ADUser -filter * | Select Name, SamAccountName
2. Простая информация о пользователе:
> Get-ADUser dmosk
* где dmosk — логин пользователя в AD DS, для которого смотрим атрибуты.
3. Как посмотреть все атрибуты пользователя:
> Get-ADUser dmosk -Properties *
4. Список пользователей в определенном организационном юните:
> Get-ADUser -filter * -SearchBase «OU=Пользователи,DC=dmosk,DC=local»
5. Поиск пользователей с определенным значением атрибута:
> Get-ADUser -filter * -Properties title | where { ($_.title -eq «Инженер») } | Select Name
* в данном примере мы выгружаем пользователей, должность которых «Инженер».
6. Исключить из поиска и показа определенных пользователей.
а) Способ 1. Использовать фильтр:
> Get-ADUser -filter { Name -notlike «Мартынов Мартын Мартынович» -and Name -notlike «Макаров Макар Макарович» }
б) Способ 2. С помощью Where и массива:
> $ExcludeUsers = @(«Мартынов Мартын Мартынович», «Макаров Макар Макарович»)
> Get-ADUser -filter * | Where { $ExcludeUsers -notcontains $_.Name }
* обе команды выведут всех пользователей, кроме тех, что перечислены в фильтре.
Выгрузка пользователей в CSV (для просмотра в текстовом формате или Excel)
Выгрузку делаем при помощи командлета Export-csv.
1. Выгрузка всех данных о всех пользователях
Get-ADUser -filter * -Properties * | Export-csv -path C:\Temp\ADUsers.csv
* C:\Temp\ADUsers.csv — путь к выгружаемому файлу.
2. Выгрузка только номеров телефонов и адресов электронной почты для пользователей, находящихся в определенном контейнере:
* обратите внимание, что мы в данной выгрузки используем кодировку UTF-8 и в качестве разделителя знак ;
Список групп пользователя
Get-AdUser dmosk -Properties memberof | Select memberof -expandproperty memberof
* где expandproperty позволяет просмотреть значение коллекций в удобочитаемом виде.
Управление локальными пользователями Windows с помощью PowerShell
Выведем список имеющихся на компьютере локальных пользователей Windows:

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

Создадим нового локального пользователя с помощью командлета New-LocalUser. Данный командлет позволяет создать следующие типы учетных записей:
- Локальные учетных записи Windows
- Учетные записи Microsoft
- Учетные записи Azure AD
При создании учётной записи пользователя с помощью New-LocalUser нельзя указывать ее пароль в качестве аргумента Password в открытом виде. Предварительно пароль нужно сконвертировать в безопасную строку, запросив пароль интерактивно:
Или указав пароль непосредственно в консоли PoSh:
Для создания пользователя в домене AD нужно использовать командлет New-ADUser.
Чтобы изменить пароль пользователя, воспользуйтесь командой Set-LocalUser (предполагаем, что вы уже преобразовали новый пароль в SecureString):

Чтобы установить флаг «Срок действия пароля пользователя не истекает» («Password never expired»), выполните:
Как видите, вам не нужно преобразовывать значение UserAccountControl, как при управлении свойствами учётной записи в AD.
Как вы помните, вы можете авторизоваться в Windows 10 под учетными записями Microsoft
Если нужно создать нового пользователя, связанного с аккаунтом Microsoft, выполните следующую команду (обратите внимание, что пароль аккаунта указывать не нужно, т.к. он хранится в Microsoft)
Для создания локальной учётной записи, которая связана с вашим аккаунтом в Azure AD (например, вы пользуетесь Office 365), выполните команду:
Чтобы удалить этого локального пользователя, выполните:
Загрузка фото пользователя AD через Exchange
Аналогичный функционал по загрузке фотографии пользователей в AD поддерживается через консоль Exchange Management Shell. Для этих целей можно использовать командлет Import-RecipientDataProperty.
Примечание. Командлет Import-RecipientDataProperty в Exchange 2010 не позволяет загрузить изображение размером больше 10 Кб.
Команда для обновления фотографии пользователя vvkuzmin будет выглядеть так:
В EMS Exchange 2013/2016 для управления фотографиями пользователей используется другой командлет — Set-UserPhoto. Чтобы добавить фотографию пользователя в этих версиях Exchange используются следующие команды:
Для очистки фотографии используется команда:
Также пользователи могут самостоятельно изменить свою аватарку через Outlook Web Access (OWA). Щелкните по своей учетной записи в правом верхнем углу, выберите Edit information -> photo -> нажмите кнопку change и укажите путь к jpeg файлу с фотографией.

Installing AD PowerShell Module on Windows 10
In Windows desktop operating systems, such as Windows 10, Windows 8.1, and Windows 7, to install the RSAT-AD-PowerShell module, you must first install the appropriate version of RSAT. You can install RSAT only in the Professional, Education, and Enterprise Windows editions, but not on Windows Home or Single Language.
- You can install the RSAT module on Windows 7, 8.1 and Windows 10 up to 1803 built by downloading and installing a special MSU package (check the article).
- Then you need to enable the module (Control Panel > Programs > Turn Windows Features On or Off > Remote Server Administration Tools > Role Administration Tools > AD DS and AD LDS Tools > Active Directory module for Windows PowerShell).Or using PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell
- On Windows 10 1809 and newer the RSAT became a part of Features on Demand (FoD). You can install AD RSAT Tools from the Settings menu (Settings > Apps > Manage Optional Features > Add features > RSAT: Active Directory Domain Services and Lightweight Directory Tools > Install). Or from the PowerShell console:
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools~~~~0.0.1.0”
Как узнать срок действия пароля пользователя в Active Directory?
Можно узнать срок действия пароля и дату его последней смены из командной строки с помощь команды Net user:
Необходимые данные присутствуют в значениях:
- Password last set — 1/21/2020 11:18:37 AM
- Password expires — 3/21/2020 11:18:37 AM
- Password changeable — 1/22/2020 11:18:37 AM
Вы можете получить срок действия пароль для любого пользователя, не обязательно обладать правами администратора или делегированными полномочиями на контейнер с пользователями.
Для получения параметров учетных записей в AD мы будем использовать специальный модуль PowerShell для Active Directory, который позволяет получить значения различных атрибутов объектов AD (см. как установить и импортировать модуль AD PowerShell в Windows 10 и Windows Server 2012 R2/2016).
С помощью командлета Get-AdUser можно получить время последней смены пароля пользователя и проверить, установлена ли опция бессрочного пароля (PasswordNeverExpires):
- PasswordLastSet — время последней смены пароля пользователя;
- PasswordNeverExpires – возвращает значение True, если пароль пользователя никогда не устаревает;
- PasswordExpired – если пароль пользователя устарел — возвращает True, если пароль не устарел – False;
Можно проверить время последней смены пароля из графической оснастки Active Directory Users & Computers (dsa.msc). Для этого откройте свойства пользователя, перейдите на вкладку Редактор атрибутов, проверьте значение атрибута pwdLastSet.
Но как вы видите, в оснастке указана только время смены пароля. Когда истекает срок действия пароля — непонятно.
Чтобы получить не время последней смены пароля, а дату окончания его срока действия, нужно использовать специальный constructed-атрибут msDS-UserPasswordExpiryTimeComputed. Значение атрибута msDS-UserPasswordExpiryTimeComputed автоматически вычисляется на основании времени последней смены пароля и парольной политики домена
Параметр UserPasswordExpiryTimeComputed возвращает время в формате TimeStamp и для преобразования его в человеко-понятный вид я использую функцию FromFileTime:
Таким образом мы получили время истечения срока действия пароля пользователя.
Если значение msDS-UserPasswordExpiryTimeComputed равно 0, значит pwdLastSet пустой (null) или равен 0 (пароль пользователя никогда не менялся).
Чтобы получить срок действия паролей для всех пользователей их определенного контейнера (OU) AD, можно воспользоваться таким скриптом PowerShell:
В результате появилась табличка со списком активных пользователей, сроком действия и временем последней смены пароля.
Можно вывести только список пользователей, чей пароль уже истек:
Создание пользователей AD из CSV в Powershell New-ADUser
Я создал в Excel такой файл и сохранил как CSV:

Для того что бы импортировать файл есть командлет Import-Csv
Нужно обратить внимание какой разделитель (делимитер) в файле и у вас в системе. Увидеть это можно так:
Если есть отличия, то тогда в команде импорта нужно добавить ключ ‘-Delimiter’ и указать тот, который в файле. Отличия будут, например, если файл был создан в русской локализации, а импорт идет на сервере с английской.
Импорт и создание пользователей делается так:
Сложение в Path сделано для демонстрации такой возможности и не является обязательным.
У меня так же была ошибка:
- new-aduser указанное имя не является корректным именем пользователя
- New-ADUser : The object name has bad syntax
- New-ADUser : Directory object not found
Причины возникновения не совсем ясны. Хоть ошибка и указывала на начало командлета New-AdUser, но проблема была в Path. Из рекомендаций были убрать в CSV файле пустые строки, проверить, что у нас нет путаницы с кавычками ( что мы не используем » ‘ в одном объекте), а так же вынести значение Path вне цикла в переменную. Мне помогло, как я понял, замена кавычек в ключе, экранирование скобками и удаление пробелов в этом ключе.
Само собой мы можем в Csv файле создать больше колонок. Например мы можем там создать и пароль, что бы у всех пользователей он был разный, но нужно будет обязательно сконвертировать его через ConvertTo-SecureString.
Если вы не уверены в том, что все данные корректны, то можете добавить ключ -WhatIf, который покажет результаты выполнения команды, но не выполнит ее физически.
я использовал пример в на этой странице добавить пользователей в группу Active Directory, но я получаю исключение с сообщением «сервер не склонен обработать запрос» при выполнении
Используем BITS для асинхронного копирования больших файлов по сети
Процесс загрузки файлов через BITS можно запустить и в асинхронном режиме, для этого к рассмотренной выше команде нужно добавить параметр –asynchronous. В этом режиме, если что-то случится в процессе загрузки файла (перезагрузка сервера, клиента, обрыв канала связи и пр.), задание автоматически продолжится после восстановления доступности источника и загрузка файла продолжится с момента прерывания связи.

Важно. По умолчанию Start-BitsTransfer работает с приоритетом Foreground (наивысший из возможных)
Предполагается, что загрузка файла, запущенная в этом режиме будет соревноваться с другими процессами за полосу пропускания канала. Чтобы избежать этого, нужно явно указать в качестве аргумента команды любой другой приоритет, например, -Priority low
Асинхронное задание BITS выполняется в фоновом режиме, а на экран не выводится процесс выполнения команды загрузки файла. Статус задания BITS можно получить из консоли PowerShell с помощью команды Get-BitsTransfer:

Команда возвращает статус передачи (в данном случае видно, что передача окончена -Transferred), информацию о количестве переданных байт, общем размере файла, времени создания и завершения задания BITS.
Вы можете просмотреть статус всех заданий BITS, запущенных на компьютере, в табличной форме:
При использовании асинхронного режима передачи, в целевом каталоге создается временный файл с расширением TMP (по умолчанию скрыт в проводнике). Чтобы конвертировать его в исходный тип файла (который хранится на сервере-источнике), нужно выполнить команду Complete-BitsTransfer:

Задание загрузки BITS после этого считается завершенным и пропадает из списка заданий.
Вы можете загрузить локальный файл в общую сетевую папку на удаленном сервере. Для этого используется следующая команда (для удобства можно указать имя задания копирования):
Чтобы временно приостановить задание BITS, выполните:
Для продолжения задания используется командлет Resume-BitsTransfer:
Вы можете добавить в задание BITS дополнительные файлы с помощью командлета Add-BitsFile:
Чтобы удалить все задания загрузки BITS на компьютере (в том числе запущенные другими пользователями), выполните команду:
Вы не сможете отменить задания BITS, запущенные из-под System (ошибка 0x80070005 Unable to cancel job). Для отмены такого задания нужно выполнить команду Remove-BitsTransfer из-под SYSTEM.
Если сервер, на котором хранится файл, требует аутентификации пользователя, вы можете вызвать окно, в котором нужно указаны учетные данные для доступа к ресурсу:

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




