- Подключение к Azure AD с помощью PowerShell
- Использование модуля Active Directory for PowerShell для администрирования домена
- Установка модуля Active Directory для PowerShell в Windows Server
- Установка модуля RSAT-AD-PowerShell в Windows 10
- Командлеты модуля AD для PowerShell
- Использование модуля RSAT-AD-PowerShell для администрирования AD
- New-ADUser: Создание пользователя в AD
- Get-ADComputer: Получить информацию о компьютерах домена
- Add-AdGroupMember: Добавить пользователя в группу AD
- Set-ADAccountPassword: Сброс пароля пользователя в AD
- Блокировка/разблокировка пользователя
- Search-ADAccount: Поиск неактивных компьютеров в домене
- New-ADOrganizationalUnit: Создать структуру OU в AD
- Get-ADReplicationFailure: Проверка репликации в AD
Подключение к Azure AD с помощью PowerShell
В этой статье мы рассмотрим, как установить PowerShell модуль для подключения к Azure AD, подключится к своему тенанту и получить различную информацию из Azure. Сейчас Microsoft разрешает использовать два PowerShell модуля для подключения к Azure:
- MS Online (MSOnline) – старый модуль для работы с Azure/Office 365 из PowerShell, который появился около 6 лет назад и сейчас не развивается Microsoft;
- Azure Active Directory PowerShell for Graph (AzureAD) – современный PowerShell модуль для работы с инфраструктурой Azure. Модуль активно развивается, в него добавляется новый функционал (в нем доступны почти все аналоги командлетов MSOnline за небольшим исключением)
Если необходимо, обновите версию PowerShell на своем компьютере.
Теперь можно установить модуль Azure PowerShell из PowerShell Gallery. Запустите консоль PowerShell с правами администратора и выполните команду:
Install-Module -Name AzureAD
Нажмите Y -> Enter
Set-PSRepository -Name PSGallery -InstallationPolicy Trusted
После окончания установки, можно проверить версию модуля AzureAD:
Get-Module AzureAD –ListAvailable
В нашем случае это 2.0.2.130
В этой версии модуля AzureAD доступно 222 командлета, которые содержат в названии *-AzureAD*. Список доступных команды можно вывести так:
Get-Command –Module AzureAD
Если у вас установлена более старая версия модуля AzureAD, ее можно обновить:
Update-Module -Name AzureAD
Если нужно установить определенную версию модуля, выполните:
Update-Module -Name AzureAD -RequiredVersion 2.0.2.120
Теперь можно подключиться в Azure с помощью вашего аккаунта:
Командлет запросит ввести учетные данные, которые вы хотите использовать для доступа к каталогу AzureAD. В этом примере для доступа к моему тенанту я использую учетную запись username@winitpro.onmicrosoft.com.
Если у вас включен Azure MFA, подтвердите в вход в аккаунт на устройстве.
Также можно запросить имя и пароль для подключения и сохранить их в переменную:
И затем использовать их для подключения:
Connect-AzureAD -Credential $AzureADcreds
Командлет возвращает подтверждение, показывающее, что сеанс был успешно подключен к каталогу. В строке будет указано окружение AzureCloud, TenantID и TenantDomain.
Connect-AzureAD -AzureEnvironmentName AzureChinaCloud
Connect-AzureAD -AzureEnvironmentName AzureGermanyCloud
Connect-AzureAD -AzureEnvironmentName AzureUSGovernment
По умолчанию модуль подключается к облаку Worldwide.
Информацию о текущем тенанте Azure можно вывести так:
Теперь вы можете использовать командлеты модуля AzureAD для получения различной информации из домена. Найдем пользователей, чьи имена начинаются с Dmit:
get-azureaduser -SearchString Dmit
Или список облачных групп в AzureAD:
Чтобы получить список доступных лицензий, которые доступны в вашей подписке Office 365 используется командлет:
Get-AzureADSubscribedSku | select SkuPartNumber, ConsumedUnits
Можно определить, какая лицензия назначена определенному аккаунту:
Get-AzureADUser -SearchString dmitriy@winitpro.onmicrosoft.com | Select -ExpandProperty AssignedLicenses
Затем по полученному SkuID можно узнать имя лицензии:
Чтобы в сессии PowerShell отключится от Azure, выполните:
Использование модуля Active Directory for PowerShell для администрирования домена
Модуль Active Directory для Windows PowerShell сегодня является одним из основных средств администрирования домена, управления объектами в Active Directory, получения различной информации о компьютерах, пользователях, группах. Любой системный администратор Windows должен уметь пользоваться не только графическими оснастками AD (чаще всего это ADUC – Active Directory Users & Computer), но и командлетами этого модуля PowerShell для выполнения повседневных задач администрирования Active Directory. В этой статье мы рассмотрим, как установить модуль RSAT-AD-PowerShell, его базовый функционал и популярные командлеты, которые должны быть полезными при управлении и работе с AD.
Установка модуля Active Directory для PowerShell в Windows Server
Модуль Active Directory для Windows PowerShell уже встроен в операционные системы Windows Server (начиная с Windows Server 2008 R2), но по умолчанию не активирован.
В Windows Server 2016 вы можете включить модуль AD для PoSh в Windows Server 2016 из панели управления Server Manager (Add Roles and Features -> Features -> Remote Server Administration tools -> Role Administration Tools -> AD DS and AD LDS Tools -> Active Directory module for Windows PowerShell).
Также вы можете установить модуль из командной строки с помощью PowerShell команды:
Install-WindowsFeature -Name «RSAT-AD-PowerShell» –IncludeAllSubFeature
Вы можете установить модуль RSAT-AD-PowerShell не только на контроллере домена. Подойдет любой рядовой сервер или даже рабочая станция. На контроллерах домена AD модуль устанавливается автоматически при развертывании роли ADDS (при повышении сервера до DC).
Взаимодействие модуля с AD выполняется через служба Active Directory Web Services, которая должна быть установлена на котроллере домена (взаимодействие по порту TCP 9389).
Установка модуля RSAT-AD-PowerShell в Windows 10
Вы можете установить модуль RSAT-AD-PowerShell не только на серверах, но и на рабочих станциях. Этот модуль входит в состав пакета RSAT (Remote Server Administration Tools), который можно скачать и установить вручную в Window 7, Windows 8.1. После установки RSAT модуль AD дл PowerShell ставится из панели управления (Control Panel -> Programs and Features -> Turn Windows features on or off -> Remote Server Administration Tools-> Role Administration Tools -> AD DS and AD LDS Tools).
В Windows 10 1809 и выше пакет RSAT уже встроен в дистрибутив (как Features on Demand), поэтому для установки модуля можно воспользоваться командой:
Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools
Командлеты модуля AD для PowerShell
В модуле Active Directory для Windows PowerShell имеется большое командлетов для взаимодействия с AD. В каждой новой версии RSAT их количество увеличивается (в Windows Server 2016 доступно 147 командлетов для AD).
Перед использованием командлетов модуля, его нужно импортировать в сессию PowerShell (в Windows Server 2012 R2/ Windows 8.1 модуль импортируется автоматически):
$rs = New-PSSession -ComputerName DC_or_Comp_with_ADPosh
Import-Module -PSsession $rs -Name ActiveDirectory
Вы можете вывести полный список доступных командлетов с помощью команды:
Get-Command –module activedirectory
Общее количество команд в модуле:
Get-Command –module activedirectory |measure-object
Большинство командлетов модуля RSAT-AD-PowerShell начинаются с префикса Get-, Set-или New-.
- Командлеты класса Get- используются для получения различной информации из AD (Get-ADUser — свойства пользователей, Get-ADComputer – параметры компьютеров, Get-ADGroupMember — состав групп и т.д.). Для их выполнения не нужно быть администратором домена, любой пользователь домена может выполнять скрипты PowerShell для получения значений большинства атрибутов объектов AD (кроме защищенных, как в примере с LAPS).
- Командлеты класса Set- служат для изменения параметров объектов в AD, например, вы можете изменить свойства пользователя (Set-ADUser), компьютера (Set-ADComputer), добавить пользователя в группу и т.д. Для выполнения этих операций у вашей учетной записи должны быть права на объекты, которые вы хотите изменить (см. статью Делегирование прав администратора в AD).
- Команды, начинающиеся с New- позволяют создать объекты AD (создать пользователя — New-ADUser, группу — New-ADGroup).
- Командлеты Remove- служат для удаления объектов AD.
Получить справку о любом командлете можно так:
Примеры использования командлетов Active Directory можно вывести так:
В PowerShell ISE при наборе параметров командлетов модуля удобно использовать всплывающие подсказки.
Использование модуля RSAT-AD-PowerShell для администрирования AD
Рассмотрим несколько типовых задач администратора, которые можно выполнить с помощью команд модуля AD для PowerShell.
New-ADUser: Создание пользователя в AD
Для создания нового пользователя в AD можно использовать командлет New-ADUser. Создать пользователя можно командой:
New-ADUser -Name «Andrey Petrov» -GivenName «Andrey» -Surname «Petrov» -SamAccountName «apetrov» -UserPrincipalName «apetrov@winitpro.ru » -Path «OU=Users,OU=Ufa,DC=winitpro,DC=loc» -AccountPassword(Read-Host -AsSecureString «Input Password») -Enabled $true
Более подробно о команде New-ADUser (в том числе пример массового создания учетных записей в домене) читайте в статье .
Get-ADComputer: Получить информацию о компьютерах домена
Чтобы вывести информацию о компьютерах в определённом OU (имя компьютера и дата последней регистрации в сети) используйте командлет Get-ADComputer:
Get-ADComputer -SearchBase ‘OU=Russia,DC=winitpro,DC=ru’ -Filter * -Properties * | FT Name, LastLogonDate -Autosize
Add-AdGroupMember: Добавить пользователя в группу AD
Чтобы добавить пользователей в существующую группу безопасности в домене AD, выполните команду:
Add-AdGroupMember -Identity MskSales -Members apterov, divanov
Вывести список пользователей в группе AD и выгрузить его в файл:
Get-ADGroupMember MskSales -recursive| ft samaccountname| Out-File c:\script\export_users.csv
Set-ADAccountPassword: Сброс пароля пользователя в AD
Set-ADAccountPassword apterov -Reset -NewPassword (ConvertTo-SecureString -AsPlainText “P@ssw0rd1” -Force -Verbose) –PassThru
Блокировка/разблокировка пользователя
Отключить учетную запись:
Включить учетную запись:
Разблокировать аккаунт после блокировки парольной политикой:
Search-ADAccount: Поиск неактивных компьютеров в домене
Чтобы найти и заблокировать в домене все компьютеры, которые не регистрировались в сети более 100 дней, воспользуйтесь командлетом Search-ADAccount:
$timespan = New-Timespan –Days 100
Search-ADAccount -AccountInactive -ComputersOnly –TimeSpan $timespan | Disable-ADAccount
New-ADOrganizationalUnit: Создать структуру OU в AD
Чтобы быстро создать типовую структуры Organizational Unit в AD, можно воспользоваться скриптом PowerShell. Допустим, нам нужно создать несколько OU с городами, в которых создать типовые контейнеры. Вручную через графическую консоль ADUC такую структуру создавать довольно долго, а модуль AD для PowerShell позволяет решить такую задачу за несколько секунд (не считая время на написание скрипта):
$fqdn = Get-ADDomain
$fulldomain = $fqdn.DNSRoot
$domain = $fulldomain.split(«.»)
$Dom = $domain[0]
$Ext = $domain[1]
$Sites = («SPB»,»MSK»,»Sochi»)
$Services = («Users»,»Admins»,»Computers»,»Servers»,»Contacts»)
$FirstOU =»Russia»
New-ADOrganizationalUnit -Name $FirstOU -Description $FirstOU -Path «DC=$Dom,DC=$EXT» -ProtectedFromAccidentalDeletion $false
foreach ($S in $Sites)
<
New-ADOrganizationalUnit -Name $S -Description «$S» -Path «OU=$FirstOU,DC=$Dom,DC=$EXT» -ProtectedFromAccidentalDeletion $false
foreach ($Serv in $Services)
<
New-ADOrganizationalUnit -Name $Serv -Description «$S $Serv» -Path «OU=$S,OU=$FirstOU,DC=$Dom,DC=$EXT» -ProtectedFromAccidentalDeletion $false
>
>
После выполнения скрипта у нас в AD появилась такая структура OU.
Для переноса объектов между контейнерами AD можно использовать командлет Move-ADObject:
$TargetOU = «OU=Buhgalteriya,OU=Computers,DC=corp,DC=winitpro,DC=ru»
Get-ADComputer -Filter ‘Name -like «BuhPC*»‘ | Move-ADObject -TargetPath $TargetOU
Get-ADReplicationFailure: Проверка репликации в AD
С помощью командлета Get-ADReplicationFailure можно проверить состояние репликации между контроллерами домена AD:
Get-ADReplicationFailure -Target DC01,DC02
Получить информацию обо всех DC в домене с помощью командлета Get-AdDomainController:
Get-ADDomainController –filter * | select hostname,IPv4Address,IsGlobalCatalog,IsReadOnly,OperatingSystem | format-table –auto
Итак, в этой статье мы рассмотрели базовые возможности и особенности использования модуля AD для PowerShell для администрирования AD. Надеюсь, эта статья подтолкнет вас к дальнейшему исследованию возможностей этого модуля и автоматизации большинства задач управления AD.