Set-ADUser команда изменения пользователя в Powershell. Для работы доступны большинство ключей, которые есть и при создании, а т.е. около 60 ключей.
Через эту команду мы не можем сменить пароль пользователя, но можем указать что бы он это сделал при следующем входе:
Set-ADUser -Identity "Test User (0001)" -ChangePasswordAtLogon $true
В качестве идентификатора можно использовать:
- Имя (DN)
- GUID
- SID
- SAM
Т.к. параметров очень много, то получить их все мы можем так:
Get-Help Set-ADUser -Parameter *
А найти конкретный, по какому-то сочетанию, так:
Get-Help Set-ADUser -Parameter *Passw*
Set-ADUser массовое изменение свойств пользователей в Powershell
Мы уже получали список пользователей Powershell через Get-ADUser и детально рассматривать не будем. Например у нас может быть ситуация, что в каком-то отделе пользователи должны сменить пароль. Эти пользователи находятся в OU Moscow, домене domain.local. Мы получаем все учетные записи, а затем передаем на изменение:
Get-ADUser -Filter * -SearchBase "OU=Moscow,DC=domain,DC=local" | Set-ADUser -ChangePasswordAtLogon $true
У нас может быть ситуация, что мы не знаем какие пользователи уволены. Мы устанавливаем для себя формальный промежуток времени в 15 дней т.е. .если пользователь не заходил под своим аккаунтом в течении этого времени, то он будет отключен. Это делается так:
$date = (Get-Date).AddDays(-15)
$users = Get-ADUser -Filter * -Properties LastLogon | where -Property {Get-Date $_.LastLogon} -LT $date
$users | Set-ADUser -Enabled $false
Еще один пример, который чаще случается по понедельникам, когда пользователи забывают пароль и просят его сбросить. Нам нужно получить список пользователей, которые заблокированы системой и у которых неудачная попытка входа была за последние 30 минут. Всех их мы разблокируем и установим новый пароль:
#Устанавливаем дату в 30 минут назад
$date = (Get-Date).AddMinutes(-30)
#Получаем свойства заблокирован ли пользователь и дату последней неудачной попытки входа
$users = Get-ADUser -Filter * -Properties LockedOut,LastBadPasswordAttempt
#Проводим сравнение с условиями, что пользователь заблокирован и дата входа не более 30 минут назад
$locked_users = $users | where {(LockedOut -EQ $true) -and {LastBadPasswordAttempt -ge $date}}
#Создаем пароль
$new_pass = ConvertTo-SecureString -AsPlainText "p@ssw0rd" -Force
#Указываем, что пароль должен быть сменен при входе
$locked_users | Set-ADUser -ChangePasswordAtLogon
#Устанавливаем пароль
$locked_users | Set-ADAccountPassword -NewPassword $new_pass
#Разблокируем аккаунт
$locked_users | Unlock-ADAccount
Конечно, эти скрипты не очень оптимизированы и условия не совсем подходят для реального мира, показан принцип подхода к задачам.
Set-ADUser изменение свойств пользователя из CSV с помощью Powershell
У меня есть некий CSV файл, который содержит список телефонов и логины пользователей. Мне нужно заменить их у пользователей. CSV файл выглядит так:
Т.к. у меня есть идентификатор, который подходит для Set-User, мне не нужно искать пользователей через Get-User и я сразу могу выполнить изменения:
$csv_data = Import-Csv -Path C:\Data.csv -Delimiter ";"
$csv_data | % {Set-ADUser -Identity $_.SamAccountName -OfficePhone $_.OfficePhone}
Делиметр - это разделитель вашего файла, он может быть запятой или табуляцией. Стоит посмотреть какой он у вас.
Set-ADUser изменение атрибутов пользователя в Powershell Set-ADUser
У каждого объекта AD есть атрибуты, которые мы можем посмотреть и изменить:
Для работы с ними в наше команде есть четыре ключа:
- Remove - удаляет одно значение атрибута
- Add - добавляет значение атрибута
- Replace - заменяет значение атрибута
- Clear - удаляет все значения атрибута
Все ключи принимают на вход тип данных hashtable, а это так:
$hasht = @{Attr="Val1","Val2";Attr2="Val3"}
Для примера заменим имя компании у одного из пользователей:
Set-ADUser -Identity "Test User (0003)" -Replace @{Company='FixMyPC'}
...
Подписывайтесь на наш Telegram канал
Теги: #powershell #ad