Как в Powershell изменить пользователя AD Set-ADUser


03 августа 2019


Set-ADUser изменение пользователя Powershell

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 parametrs

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 файл выглядит так:

powershell 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 есть атрибуты, которые мы можем посмотреть и изменить:

Атрибуты пользователя Powershell

Для работы с ними в наше команде есть четыре ключа:

  • Remove - удаляет одно значение атрибута
  • Add - добавляет значение атрибута
  • Replace - заменяет значение атрибута
  • Clear - удаляет все значения атрибута

Все ключи принимают на вход тип данных hashtable, а это так:

$hasht = @{Attr="Val1","Val2";Attr2="Val3"}

Для примера заменим имя компании у одного из пользователей:

Set-ADUser -Identity "Test User (0003)" -Replace @{Company='FixMyPC'}

 

...

Теги: #powershell #ad


Популярные тэги
О блоге
Этот блог представляет собой конспекты выученного материала, преобретенного опыта и лучшие практики в системном администрировании и программировании.