Установка фотографии пользователя с помощью Powershell

Установить фото для одного пользователя Active Directory:

Set-ADUser vyurov -Replace @{thumbnailPhoto=([byte[]](Get-Content "C:\users\photo.jpg" -Encoding byte))}

Удалить фотографию пользователя в Active Directory:

Set-Aduser "d.ivanov" -clear thumbnailphoto

Пакетный импорт фото для пользователей:

Import-Csv "C:\фото\users.csv" -Delimiter ";" -Encoding Default | %{Set-ADUser -Identity $_.samaccountname -Replace @{thumbnailPhoto=([byte[]](Get-Content $_.Photo -Encoding byte))}}

В файле csv соответственно колонки samaccountname и photo (полный путь к файлу с фото)

Выгрузить фото одного юзера из Active Directory с помощью Powershell:

$User = Get-ADUser vyurov -Properties thumbnailPhoto
$User.thumbnailPhoto | Set-Content "c:\users\vyurov.jpg" -Encoding byte

Выгрузить фото всех пользователей из определенного контейнера в файл:

$Users= Get-ADUser -Filter * -SearchBase "OU=Users,DC=test,DC=ru" -Properties thumbnailPhoto  | ? {$_.thumbnailPhoto}
foreach ($ADuser in $Users) {
$name = $ADuser.SamAccountName + ".jpg"
$ADuser.thumbnailPhoto | Set-Content $name -Encoding byte
}

Выборка всех пользователей, у которых есть фото в AD:

Get-ADUser -Filter * -properties thumbnailPhoto | ? {$_.thumbnailPhoto} | select Name

Выбрать всех пользователей без фотографии:

Get-ADUser -Filter * -properties thumbnailPhoto | ? {(-not($_.thumbnailPhoto))} | select Name

Как добавить нескольким пользователям несколько групп Active Directory с помощью Powershell

Задача - добавить одному пользователю Active Directory несколько групп из файла.
Если пользователь уже добавлен в какие то группы из списка(вылезет ошибка в процессе) - скрипт продолжит выполнение дальше.

Get-Content "C:\scripts\groups.txt" | Add-ADGroupMember -Members "vasiliy"

Задача - добавить нескольким пользователям из списка несколько групп с помощью Powershell.
Решение 1:
Если хоть один пользователь уже будет добавляемой группе, скрипт остановится. Запускать только если в добавляемых группах точно нет этих пользователей!

$users = Get-Content "C:\scripts\users.txt"
get-content "C:\scripts\groups.txt" | Add-ADGroupMember -Members $users

Читать далее

Импорт пользователей в active directory из CSV. Создание ящика в Exchange

Задача - сделать в Active Directory импорт пользователей из csv-файла и создать им ящики в Exchange.
Работоспособно для Windows Server 2008 R2, PowerShell 5, Exchange 2010 SP3

Содержимое CSV-файла:
import-csv

# Подключение в Exchange (если надо)
add-pssnapin microsoft.exchange.management.powershell.e2010 
# Импорт модуля (если надо)
import-module activedirectory 

$Users = Import-CSV -Path "C:\scripts\import\users.csv" -delimiter ";" -Encoding Default

foreach ($User in $Users)  
{  
 $Name = $User.Name
 $GivenName = $User.GivenName
 $Surname = $User.Surname
 $Department = $User.Department
 $Title = $User.Title
 $Description = $User.Description
 $Password = $User.Password
 $DisplayName = $User.DisplayName
 $Path = $User.Path
 $Company = $User.Company
 $sAMAccountName = $User.sAMAccountName
 $userprincipalname = $User.userprincipalname
 $Identity = $User.Identity
 $Database = $User.Database
 $Alias = $User.Alias
 
# Добавляем пользователей
 New-ADuser -Name $Name -Surname $Surname -Department $Department -GivenName $GivenName -Title $Title -Description $Description -Company $Company -DisplayName $DisplayName -Userprincipalname $Userprincipalname -Path $Path -CannotChangePassword $false -PasswordNeverExpires $false -ChangePasswordAtLogon $false -PasswordNotRequired $true -Enabled $true -sAMAccountName $sAMAccountName -AccountPassword (ConvertTo-SecureString $Password -AsPlainText -Force)
# Создаём ящик в Exchange
 Enable-Mailbox -identity $Identity -Alias $Alias –Database $Database
# Отключаем OWA и ActiveSync
 Set-CASMailbox -Identity $Identity -OwaEnabled $false -ActiveSyncEnabled $false 
} 

Поиск по операционным система в Active Directory с помощью Powershell

Найти все компьютеры, на которых стоит серверная операционная система:

Get-ADComputer -Filter "OperatingSystem -like '*Server*'" -properties OperatingSystem,OperatingSystemServicePack | Select Name,Op* | format-list

Поиск в конкретной OU:

Get-ADComputer -Filter * -SearchBase "OU=Domain Controllers,dc=test,dc=ru" -properties OperatingSystem,OperatingSystemServicePack | Select Name,Op* | format-list


Список операционных систем в домене:

Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem -unique | Sort OperatingSystem

Найти компьютеры с Windows XP в домене:

Get-ADComputer -Filter "OperatingSystem -like '*Server*'" -properties OperatingSystem,OperatingSystemServicePack | Select Name,Op* | format-list

Найти компьютеры с Windows XP, которые меняли пароль после 01.06.2016:

Get-ADComputer -Filter {(OperatingSystem -like '*XP*') -and (Passwordlastset -gt '1/6/2016')} | Select Name | format-list