Импорт и использование модуля PowerShell для Active Directory
В Windows 7 и Windows Server 2008 R2, на которых установлен PowerShell 2.0, чтобы начать пользоваться модулем AD необходимо импортировать его в сессию PowerShell командой:
Кроме того, вы можете экспортировать модуль с удаленной машины, где он уже установлен и импортировать его в свою сессию PowerShell:
В Windows Server 2012 R2/ 2016 и Windows 8.1 / Windows 10 модуль (если он установлен) импортируется в сессию автоматически.
Если компьютер включен в домен, по умолчанию создается диск по имени AD:..Вы можете перейти на этот диск командой CD и использовать привычные команды работы с файловой системой для навигации по этому диску. Пути представлены в формате X500.
Вывести список доступных командлетов модуля для работы с Active Directory можно так:
В различных версия Windows доступно разное количество командлетов:
- Windows Server 2008 R2 — 76 командлетов.
- Windows Server 2012 — 135 командлетов
- Windows Server 2012 R2 / 2016 — 147 командлетов.
Итак, теперь вы можете использовать командлеты PowerShell для администрирования AD. На нашем сайты вы можете познакомиться с использованием следующих командлетов из модуля AD для PowerShell: Get-ADGroupMember , Add-ADGroupMember , Move-ADDirectoryServerOperationMasterRole, .
Understanding IsInherited, InheritanceFlags, and PropagationFlags
The Inheritance and how the object is inherited to the child object defined by three properties:
- IsInherited: Object is inherited from a parent object, and the possible values are true or false.
-
InheritanceFlags: Two values this flag can have are:
- None: The ACE won’t inherit to the child items. It’s only applied to the object it’s set to.
- ContainerInherit: The ACE is inherited to the child items.
-
PropagationFlags: control how the ACE is propagated to the child items, and the possible values are:
- None: Specifies that no inheritance flags are set.
- InheritOnly: The ACE is applied to the child items only, not the object where the ACE is set.
- NoPropagateInherit: The ACE is applied on the object where the ACE is set not propagated to any child. You can see this value when the Only Apply this permission to objects and/or containers within this container is selected.
Keep in mind that the PropagationFlags are significant only if inheritance flags are present.
Командлеты Active Directory PowerShell
В модуле Active Directory для Windows PowerShell есть множество командлетов для взаимодействия с AD. Каждая новая версия RSAT содержит больше командлетов, чем предыдущая. В Windows Server 2022 доступно 147 командлетов PowerShell для Active Directory.
Перед использованием командлетов модуля Active Directory вам необходимо импортировать его в сеанс PowerShell:
Import-Module ActiveDirectory
Начиная с Windows Server 2012 R2, Windows 8.1 и в последующих версиях модуль импортируется автоматически.
Если модуль Active Directory не установлен на вашем компьютере, вы можете импортировать его со своего контроллера домена (для этого вам нужны права администратора домена) или с другого настольного компьютера:
$psSess = New-PSSession -ComputerName ИМЯ_КОМПЬЮТЕРА Import-Module -PSsession $psSess -Name ActiveDirectory
В этих командах ИМЯ_КОМПЬЮТЕРА — это компьютер, который является Контроллером Домена, либо компьютером, на котором установлен модуль Powershell Active Directory.
Вы можете отобразить полный список доступных командлетов Active Directory с помощью команды:
Get-Command -module ActiveDirectory
Чтобы посчитать общее количество командлетов в модуле AD выполните команду:
Get-Command -module ActiveDirectory | measure-object | select count
Большинство командлетов RSAT-AD-PowerShell начинаются с префиксов Get-, Set- или New-.
- Командлеты Get- класса используются для получения различной информации из Active Directory (Get-ADUser — свойства пользователя, Get-ADComputer — настройки компьютера, Get-ADGroupMember — членство в группе и так далее). Чтобы запустить их, вам не нужно быть администратором домена. Любой пользователь домена может запускать команды PowerShell для получения значений атрибутов объекта AD (кроме конфиденциальных, как в примере с LAPS);
- Командлеты класса Set- используются для установки (изменения) параметров объекта в Active Directory. Например, вы можете изменить свойства пользователя (Set-ADUser), настройки компьютера (Set-ADComputer), добавить пользователя в группу и так далее. Для этого у вашей учётной записи должны быть разрешения на изменение свойств объекта;
- Команды, начинающиеся с New- позволяют создавать объекты AD (создать пользователя – New-ADUser, создать группу – New-ADGroup);
- Командлеты Remove- используются для удаления объектов AD.
Так вы можете получить помощь по любому командлету:
Get-Help КОМАНДЛЕТ Get-Help КОМАНДЛЕТ -Full
Вы можете отобразить примеры использования командлетов Active Directory следующим образом:
(Get-Help КОМАНДЛЕТ).examples
Или:
Get-Help КОМАНДЛЕТ -Examples
Всплывающие подсказки удобно использовать при вводе параметров командлета в PowerShell ISE.
Создание сетевых ресурсов
Сначала зарегистрируйте поставщика ресурсов доменных служб Azure AD с помощью командлета Register-AzResourceProvider:
Затем создайте группу ресурсов с помощью командлета New-AzResourceGroup. В следующем примере создается группа ресурсов с именем myResourceGroup в регионе westus. Используйте желаемое имя и регион:
Создайте виртуальную сеть и подсети для доменных служб Azure AD. Создаются две подсети — для доменных служб (DomainServices) и для рабочих нагрузок (Workloads). Службы Azure AD DS развертываются в выделенной подсети DomainServices. Не развертывайте другие приложения или рабочие нагрузки в этой подсети. Используйте отдельные подсети Workloads или другие подсети для остальных виртуальных машин.
Создайте подсети с помощью командлета New-AzVirtualNetworkSubnetConfig, а затем создайте виртуальную сеть с помощью командлета New-AzVirtualNetwork.
Создание группы безопасности сети
Azure AD DS требуется группа безопасности сети, чтобы защитить порты, необходимые для управляемого домена, и блокировать весь остальной входящий трафик. Группа безопасности сети содержит перечень правил, которые разрешают или запрещают передачу трафика в виртуальную сеть Azure. В Azure AD DS группа безопасности сети выступает в качестве дополнительного уровня защиты для блокировки доступа к управляемому домену. Дополнительные сведения см. в разделе .
Указанные ниже командлеты PowerShell используют New-AzNetworkSecurityRuleConfig для создания правил, а затем New-AzNetworkSecurityGroup для создания группы безопасности сети. Затем группа безопасности сети и правила связываются с подсетью виртуальной сети с помощью командлета Set-AzVirtualNetworkSubnetConfig.
Understanding the Get-ACL and AD Drive Output
To make things easier, let’s start by understanding each property of the output and what that property does..
Understanding the ActiveDirectoryRights Property
ActiveDirectoryRights: The ActiveDirectoryRights refer to what rights are assigned to the AD object; usually, this is readable, like WriteProperty, DeleteProperty. But this is not always the case. The ActiveDirectoryRights can also hold ExtendedRights, Generic, and other values.
Note
You can read more about ActiveDirectoryRights on the ActiveDirectoryRights page.
- The ExtendedRight flag means permission is set to a very specific AD object attribute, such as setting the write pwdLastSet to a AD user object attribute.
-
Generic: Some generic permission values include
- GenericAll: Equivalent to Full Control, so the user with GenericAll has full control permission on the object.
- GenericRead: Can read all object properties and permission and list content if its a container or OU.
- GenericWrite: Can write to all object’s properties and permission.
Использование Get-ADUser с фильтрацией по атрибутам
Используя опцию -Filter, вы можете фильтровать список учётных записей пользователей по одному или нескольким атрибутам. В качестве аргументов этого параметра можно указать значение определённых атрибутов пользователей Active Directory. Если вы используете параметр -Filter, командлет Get-ADUser будет перечислять только тех пользователей, которые соответствуют критериям фильтра.
Например, я хочу перечислить активные (Enabled) учётные записи пользователей, имя которых содержит «Dmitry» (в приведённом ниже примере используется несколько фильтров; вы можете комбинировать условия, используя стандартные логические операторы сравнения PowerShell):
Get-AdUser -Filter "(Name -like '*Dmitry*') -and (Enabled -eq 'True')" -Properties * | Select-Object name,enabled
Кроме того, вы можете отсортировать полученный список пользователей по определённому атрибуту пользователя (столбцу) с помощью командлета Sort-Object. Вы также можете использовать командлет Where-Object для одновременного указания нескольких критериев фильтрации.
Get-ADUser -Filter * -properties PasswordExpired,PasswordLastSet,PasswordNeverExpires -SearchBase 'OU=NY,DC=hackware,DC=ru'| Where-Object {$_.name –like "*Dmitry*" -and $_.Enabled -eq $true} | Sort-Object PasswordLastSet | Select-Object Name,PasswordExpired,PasswordLastSet,PasswordNeverExpires
Таким образом, вы можете составить таблицу с любыми необходимыми атрибутами пользователей Active Directory.
Что такое RSAT?
RSAT или Remote Server Administration Tools – это средства удаленного администрирования сервера, которые предназначены для управления ролями и компонентами сервера. В состав RSAT входят и необходимые оснастки управления, и утилиты командной строки и модули Windows PowerShell. Вы можете установить все это сразу, а можете только то, что Вам нужно.
Если Вы хотите установить средства удаленного администрирования сервера на клиентскую операционную систему, то Вам предварительно необходимо скачать их с официального сайта Microsoft.
В серверных операционных систем они поставляются в виде компонента, и сегодня мы научимся устанавливать RSAT в Windows Server 2016.
Работа с email адресами пользователей в Active Directory с помощью PowerShell
Get-ADUser -Filter * -Properties EmailAddress -SearchBase 'OU=Paris,OU-Fr,DC=hackware,DC=ru'| Select-Object Name,EmailAddress
Чтобы составить список активных учётных записей пользователей с адресами электронной почты выполните:
Get-ADUser -Filter {(mail -ne "null") -and (Enabled -eq "true")} -Properties Surname,GivenName,mail | Select-Object Name,Surname,GivenName,mail | Format-Table
Чтобы получить список пользователей Active Directory без адреса электронной почты:
Get-ADUser -Filter * -Properties EmailAddress | Where-Object -Property EmailAddress -eq $null
Следующий пример позволяет экспортировать адресную книгу электронной почты компании из AD в файл 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\adress_list.csv
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
Summary
This is an admittedly complicated PowerShell script so if there is anything you don’t understand and have questions about, please feel free to ask in the comments. I will also point out that like the AD event monitor, just because you can use something like this doesn’t mean you should. Small domains with minimal changes could get by with this script or something similar.
I’d be leery though, of using this in a large enterprise with a highly dynamic Active Directory infrastructure. Although if your change window was small, it might be effective. I’m assuming that if you are running a large AD environment, your company has invested in high-quality and appropriate management and reporting tools. You can leverage PowerShell for those niche or special situations.
If you can try out the reporting script, I’d love to hear your experiences. Enjoy!
Вступление
Немалая часть задач, связанных с обслуживанием локальных вычислительных сетей, представляет собой выполнение рутинных операций, ручная реализация которых может потребовать значительного времени. Вероятно, решения, позволяющие автоматизировать выполнение административных задач, которые могли бы повысить производительность, возникли почти сразу же с появлением профессии системного администратора.
Наиболее распространенным средством «экономии времени и избавления от головной боли» стала запись и последовательное пакетное исполнение необходимых операций — исполнение сценариев или скриптов в интерпретаторе команд операционной системы.
Попытки улучшить состояние дел в области управления и администрирования Windows с помощью командного интерфейса привели не к адаптации чужеродного для системы языка сценариев или созданию супер-утилиты, работающей в DOS, а к появлению PowerShell – новой командной оболочки.
В составе MS-DOS и Windows 9x таким интерпретатором, позволяющим выполнять обработку пакетных файлов (bat-файлов), являлся command.com, впоследствии (начиная с выхода Windows NT) замененный cmd.exe. Позднее появился Windows Script Host.
Тем не менее, процесс написания и выполнения сценариев в ОС Windows не развит так хорошо, как, например, в UNIX-системах. Одна из причин этого – сам графический интерфейс ОС Windows, видимо и сделавший ее столь популярной среди обычных, не корпоративных пользователей. Возможность управления некоторыми элементами среды Windows с помощью графического интерфейса не всегда можно реализовать с помощью системных утилит, выполняемых в командной строке. С другой стороны, возможности каких-то системных программ, поставляемых в составе Windows, не всегда представлены в GUI. К тому же интерпретаторы в Windows имеют довольно ограниченный набор команд, «зашитых» в саму оболочку. Windows Script Host не интегрирован с командной строкой и сам по себе представляет потенциальную опасность – его использует достаточно большое количество вредоносных программ.
Попытки улучшить состояние дел в области управления и администрирования Windows с помощью командного интерфейса привели не к адаптации чужеродного для системы языка сценариев или созданию супер-утилиты, работающей в DOS, а к появлению Windows PowerShell – новой командной оболочки. По некоторым данным, ее появление связано с использованием платформы .NET при создании командного интерфейса для WMI. В данный момент PowerShell является отдельным приложением, который можно установить на любую систему, использующую платформу .Net 2.0 (Windows XP, Vista, Server 2003). Начиная с Server 2008, PowerShell будет являться встроенным компонентом Windows-систем. Если же у вас не Server 2008, для знакомства с PowerShell предварительно необходимо будет его загрузить (возможно, вам понадобится и установка .NET).
Создание управляемого домена
Теперь мы переходим к созданию управляемого домена. Задайте идентификатор подписки Azure, а затем укажите имя управляемого домена, например aaddscontoso.com. Вы можете получить идентификатор подписки с помощью командлета Get-AzSubscription.
Если вы выбрали регион, который поддерживает зоны доступности, ресурсы Azure AD DS распределяются между зонами для обеспечения избыточности.
Зоны доступности — уникальные физические расположения в пределах одного региона Azure. Каждая зона состоит из одного или нескольких центров обработки данных, оснащенных независимыми системами электроснабжения, охлаждения и сетевого взаимодействия. Чтобы обеспечить устойчивость, во всех включенных областях используются минимум три отдельные зоны.
Вы не можете настроить распределение Azure AD DS между зонами. Платформа Azure автоматически обрабатывает распределение ресурсов зоны. См. дополнительные сведения о зонах доступности и регионах.
Создание ресурса и возврат управления в командную строку PowerShell занимает несколько минут. Подготовка к работе управляемого домена продолжается в фоновом режиме. На завершение развертывания может понадобиться до часа. На портале Azure на странице Обзор для управляемого домена на этом этапе развертывания отображаются сведения о текущем состоянии.
Когда на портале Azure отобразятся сведения о том, что подготовка управляемого домена к работе завершена, выполните следующие задачи.
- Обновите параметры DNS для виртуальной сети, чтобы виртуальные машины могли найти управляемый домен для присоединения к нему или для аутентификации.
- , чтобы пользователи могли входить в управляемый домен с помощью рабочих учетных данных.
Создание и включение учетной записи
param($help) function funHelp() { " DESCRIPTION: NAME: CreateAndEnableUser.Ps1 Creates an enabled user account by reading csv file PARAMETERS: -help prints help file SYNTAX: CreateAndEnableUser.Ps1 Creates an enabled user by reading a csv file CreateAndEnableUser.Ps1 -help Displays the help topic for the script "@ $helpText exit } if($help){ "Obtaining help ..." ; funhelp } $aryUser= import-csv -Path c:\psbook\enabledusers.csv $Class = "User" $dc = "dc=nwtraders,dc=com" foreach($strUser in $aryUser) { $ou = "ou="+$strUser.OU $ADSI = "LDAP://$ou,$dc" $cnuser="cn="+$($strUser.userName) $User = $ADSI.create($CLass,$cnuser) $User.put("SamaccountName", $($strUser.username)) $User.setInfo() $User.put("userPassword", $($strUser.Password)) $user.psbase.invokeset("AccountDisabled", "False") $User.setInfo() }
Understanding the InheritanceType Property
The InheritanceType shows the scope of the applied permission and defines which AD objects the ACE should be applied to. You can see the InheritanceType in the ACL GUI in the Advance Security Permission Window.
The InheritanceType can hold one of the following values:
- None: The permission is applied to the object where the permission is set. The Applies to is set to This Object Only
- All: The permission is applied to the object where the permission is set and all the child items in the tree. The Applies to is set to This object and all descendant objects.
- Descendents: The permission is applied to child items only but not to the object where the permission is set. The Applies to is set to All descendant objects. Think of OU1 and a child OU2. User1 has the following permission on OU1
User1 can perform an action on OU2 and OU1 child items but not on the OU1 object.
- Children: set permissions on the direct child only, not the on the object itself neither any descendants object of its children. You get this value when the Applies to set to any value other than This object only or This object and all descendant objects and at the same time the Only apply this permission to objects and/or containers within this container check box is selected.
- SelfAndChildren: Set permissions on the object itself where the permission is placed and the direct child only. You get this value when the Applies to set to value This object and all descendant objects and at the same time the Only apply this permission to objects and/or containers within this container check box is selected.
Understanding the ObjectType Property
The ObjectType is represented by a GUID value, even though this is one of the most important values that should be clear. The output of makes it complex to understand. The ObjectType is the object attribute. For example, in the following output, User1 is Allowed to WriteProperty to object 28630ebf-41d5-11d1-a9c1-0000f80367c1.
To resolve this GUID to a name we need to see where these GUIDs are stored.
To get the list of ObjectType names, run the following PowerShell code
Take a look at the output, you see that there is the ObjectType GUID and the Name what an ObjectType GUID.
So if you have an ObjectType GUID, you can search through the hashtable, and as you can see below, the ObjectType GUID is Lockout-Time
Note
If you want to know more about Hashtables, read this great post on Everything you wanted to know about hashtables
From the previous example and after understanding the ObjectType value, we know that ContosoUser1 is Allowed* to *WrtiteProperty to Lockout-Time property
Note
One side note, if the value of the ObjectType was 00000000-0000-0000-0000-000000000000 this means that the user is allowed//denied to all properties, not a specific one.
Add-AdGroupMember — Добавление пользователей в группу AD
Вы можете добавлять пользователей в группу Active Directory с помощью командлета Add-AdGroupMember. Добавьте двух новых пользователей в новую группу:
Add-AdGroupMember -Identity TestADGroup -Members Alex, MiAl
Если список пользователей, добавляемых в группу, довольно велик, вы можете сохранить список учётных записей пользователей в файл CSV, затем импортировать этот файл и добавить каждого пользователя в группу.
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Формат файла CSV должен быть следующим: пользователи должны быть перечислены по одному в строке с пользователями в качестве заголовка столбца.
Чтобы получить всех членов группы (groupX) и добавить их в другую группу (groupY), используйте эту команду:
Get-ADGroupMember "GroupX" | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "Group-Y" -Members $_}
Если вам нужно скопировать членов всех подгрупп (рекурсивно) в новую группу, выполните эту команду:
Get-ADGroupMember -Identity "GroupX" -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity "GroupY" -Members $_}
Установка модуля Active Directory для Windows PowerShell
По умолчанию в системе установлены не все модули Windows PowerShell, некоторые из них добавляются во время установки соответствующей роли или компонента. Например, если Ваш сервер не является контроллером домена, соответствующего модуля PowerShell (RSAT-AD-PowerShell) для администрирования Active Directory в нем нет, т.е. использовать командлеты PowerShell для управления AD Вы не сможете. Однако Вы можете установить модуль PowerShell для работы с Active Directory. Именно это мы сейчас и рассмотрим, при этом я покажу два варианта установки модуля RSAT-AD-PowerShell — это с помощью «Мастера добавления ролей и компонентов», т.е. используя графический интерфейс и, конечно же, с помощью Windows PowerShell.
Процесс установки модуля Active Directory для Windows PowerShell такой же, как и установка остальных компонентов и средств удаленного администрирования в Windows Server 2016, поэтому если Вы умеете устанавливать роли или компоненты сервера, то с установкой RSAT-AD-PowerShell Вы легко справитесь.
Запускаем «Диспетчер серверов» и нажимаем «Управление ->Добавить роли или компоненты».
На первом окне можем сразу нажать «Далее».
Шаг 3
Далее выбираем тип установки, мы хотим установить компонент, поэтому выбираем первый пункт «Установка ролей или компонентов», жмем «Далее».
Затем выбираем сервер, на который будут установлены роли и компоненты, жмем «Далее».
Шаг 5
На этом шаге нам предлагают выбрать роли для установки, а так как мы не собираемся устанавливать роли, сразу жмем «Далее».
Шаг 6
На шаге выбора компонентов мы ищем пункт «Средства удаленного администрирования сервера -> Средства администрирования ролей -> Средства AD DS и AD LDS -> Модуль Active Directory для Windows PowerShell» и отмечаем его галочкой, жмем «Далее».
Шаг 7
Проверяем выбор компонентов и жмем «Установить».
Начнется процесс установки модуля Active Directory для Windows PowerShell.
Он будет завершен, когда мы увидим сообщение «Установка выполнена на …», нажимаем «Закрыть».
Установка модуля RSAT-AD-PowerShell с помощью PowerShell
Если Вы не хотите щелкать мышкой по окошкам мастера, то Вы можете легко выполнить процедуру установки компонентов с помощью нашего любимого Windows PowerShell, кстати, таким способом это делается, на мой взгляд, гораздо проще и быстрей.
Для установки модуля Active Directory для Windows PowerShell запустите оболочку PowerShell и выполните следующие команды (вместо командлета Add-WindowsFeature можно использовать Install-WindowsFeature).
Import-Module ServerManager Add-WindowsFeature -Name "RSAT-AD-PowerShell" –IncludeAllSubFeature
Смотрим список командлетов PowerShell для работы с Active Directory
Для того чтобы проверить, что у нас установился необходимый модуль PowerShell давайте, выполним команды, которые покажут нам количество командлетов для работы с Active Directory и сам список этих командлетов.
Чтобы узнать, сколько у нас командлетов для администрирования Active Directory пишем вот такую команду
Get-Command -Module ActiveDirectory | Measure-Object
А для того чтобы посмотреть полный перечень командлетов пишем следующую команду, т.е. результат работы Get-Command мы не передаем по конвейеру командлету Measure-Object.
Get-Command -Module ActiveDirectory
Мы видим, что нас появилось 147 командлетов для работы с Active Directory, которые мы теперь можем использовать для администрирования AD.
На этом все, надеюсь, материал был Вам полезен, удачи!
Нравится2Не нравится
Inputs
None or Microsoft.ActiveDirectory.Management.ADObject
An Active Directory object is received by the Identity parameter.
Derived types, such as the following, are also accepted:
- Microsoft.ActiveDirectory.Management.ADGroup
- Microsoft.ActiveDirectory.Management.ADUser
- Microsoft.ActiveDirectory.Management.ADComputer
- Microsoft.ActiveDirectory.Management.ADServiceAccount
- Microsoft.ActiveDirectory.Management.ADOrganizationalUnit
- Microsoft.ActiveDirectory.Management.ADFineGrainedPasswordPolicy
- Microsoft.ActiveDirectory.Management.ADDomain
New-ADOrganizationalUnit: создание организационной единицы в AD
Чтобы быстро создать типичную структуру организационной единицы в AD, вы можете использовать сценарий PowerShell. Предположим, вы хотите создать несколько подразделений с именами состояний и создать в них типичные контейнеры объектов. Создание этой структуры AD вручную с помощью графической оснастки ADUC занимает довольно много времени. Модуль AD для PowerShell позволяет сделать это за секунды (кроме времени на написание скрипта):
$fqdn = Get-ADDomain $fulldomain = $fqdn.DNSRoot $domain = $fulldomain.split(".") $Dom = $domain $Ext = $domain $Sites = ("Nevada","Texas","California","Florida") $Services = ("Users","Admins","Computers","Servers","Contacts","Service Accounts") $FirstOU ="USA" New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path "DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false ForEach-Object ($S in $Sites) { New-ADOrganizationalUnit -Name $S -Description "$S" -Path "OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false ForEach-Object ($Serv in $Services) { New-ADOrganizationalUnit -Name $Serv -Description "$S $Serv" -Path "OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT" -ProtectedFromAccidentalDeletion $false } }
После запуска сценария в Active Directory появляется следующая структура подразделений.
Предварительные требования
Для работы с этой статьей требуются следующие ресурсы:
Установите и настройте Azure PowerShell.
При необходимости выполните инструкции по установке модуля Azure PowerShell и его подключению к подписке Azure.
Войдите в подписку Azure с помощью командлета Connect-AzAccount.
Установите и настройте Azure AD PowerShell.
При необходимости выполните инструкции по установке модуля Azure AD PowerShell и подключению к Azure AD.
Войдите в клиент Azure AD с помощью командлета Connect-AzureAD.
Привилегии глобального администратора для клиента Azure AD, чтобы включить доменные службы Azure AD.
Для создания нужных ресурсов Azure AD DS требуются привилегии участника в подписке Azure.
Важно!
Так как модуль PowerShell Az.ADDomainServices предоставляется в предварительной версии, его нужно установить отдельно с помощью командлета .
Редактирование
Редактирование информации выполняется с помощью командлета Set-ADUser и передачи в качестве параметра имя атрибута с новым значением. Рассмотрим несколько примеров изменения информации с помощью данной команды.
Редактирование домашней страницы пользователя
> Set-ADUser dmosk -HomePage «dmosk.ru»
* в данном примере редактируется домашняя страница для пользователя с логином dmosk.
Редактирование телефона
> Get-ADUser -Filter dmosk -Properties OfficePhone | % { Set-ADUser $_ -OfficePhone «+7(812)999-99-99» }
* редактируем атрибут OfficePhone. Последний не выводится командой по умолчанию, поэтому мы указываем его в параметре -Properties.
Редактирование мобильного телефона по ФИО пользователя
> Get-ADUser -Filter {name -eq ‘Иванов Иван Иванович’} -Properties mobile | % { Set-ADUser $_ -mobile «+7(999)999-99-99» }
* сначала находим пользователя по ФИО, затем редактируем атрибут mobile.
Редактирование комнаты сотрудника
> Set-ADUser dmosk -Office «Санкт-Петербург, Невский проспект»
* в данном примере редактируется местонахождение сотрудника с именем входа dmosk.
Добавление пользователя в группу
> Add-ADGroupMember -Identity «Группа в AD» -Member master
* с помощью данной команды мы добавим пользователя master в группу Группа в AD.
Задать подразделение, в котором работает пользователь
Редактируем атрибут department:
> Set-ADUser dmosk -department «Отдел сопровождения железнодорожных молекул»
* в данном примере мы указали, что пользователь dmosk работает в «Отделе сопровождения железнодорожных молекул».
Изменение общей информации о пользователе
$objUser = "LDAP://cn=MyNewUser,ou=myTestOU,dc=nwtraders,dc=msft" $objUser.put("SamaccountName", "myNewUser") $objUser.put("givenName", "My") $objUser.Put("initials", "N.") $objUser.Put("sn", "User") $objUser.Put("DisplayName", "My New User") $objUser.Put("description" , "simple new user") $objUser.Put("physicalDeliveryOfficeName", "RQ2") $objUser.Put("telephoneNumber", "999-222-1111") $objUser.Put("mail", "<a href="mailto:"></a>") $objUser.Put("wwwHomePage", "<a href="http://www.mnu.msn.com"">http://www.mnu.msn.com"</a>) $objUser.setInfo()
Получение компьютеров
Команда, которая вернет список всех компьютеров в домене следующая:
Команда точно выполнится на домен контроллере, так как все поддерживаемые серверные версии ОС устанавливают нужный модуль Powershell вместе с Active Directory (если вы только специально не отключали эту возможность). Если вы планируете выполнять команду с клиента на Windows 7 и выше, то такой модуль устанавливается вместе с RSAT (Remote Server Administration Tools). В отдельном случае может понадобится импортировать этот модуль следующей командой:
Вы так же можете проверить, что этот модуль у вас установлен следующей командой:
В остальных случаях стоит смотреть на явные запреты на выполнение скриптов Powershell и чтения Active Directory.
Что бы вернуть данные по одному пользователю используется ключ Identity:
Параметр Filter является обязательным. Вы можете вернуть дополнительные данные используя Properties:
Вам так же будет интересно:
Get-ADUser: экспорт пользователей AD в CSV/TXT
Полученный список пользователей домена с атрибутами можно экспортировать в текстовый файл:
Get-ADUser -Filter * -Properties PasswordExpired,PasswordLastSet,PasswordNeverExpires | Format-Table Name,PasswordExpired,PasswordLastSet,PasswordNeverExpires > C:\temp\users.txt
Или вы можете экспортировать список пользователей AD в файл CSV (который позже будет удобно импортирован в Excel):
Get-ADUser -filter * -Properties PasswordExpired,PasswordLastSet,PasswordNeverExpires | Where-Object {$_.name –like "*Dmitry*"} | Sort-Object PasswordLastSet | Select-Object Name,PasswordExpired,PasswordLastSet,PasswordNeverExpires | Export-csv -path c:\tmp\user-passwords-expires.csv -Append -Encoding UTF8