Работа с группами Active Directory с помощью Powershell

1. Импорт пользователей в группы Active Directory с помощью Powershell. Задача - добавить пользователей в группы AD из файла CSV.

Содержание CSV-файла:

ADGroup | ADUsers
ServerAdmin | vasya;petya;danya

Скрипт:

$src = Import-CSV -Path "C:\scripts\add-adgroupmember\test.csv" -delimiter ";" -Encoding Default

foreach($line in $src){
    $users = $line.ADUsers -split ";"
    $groups = $line.ADGroup
    foreach($user in $users){
    Add-ADGroupMember -Identity $groups -Members $user
    }
}  

Если пользователь уже есть в группе, то вылезет ошибка и скрипт продолжит работать.

Читать далее

Создание общего почтового ящика с помощью Powershell в Exchange 2010

Задача - создать общий почтовый ящик и добавить права для него для нескольких пользователей. Для этого предварительно нужно создать учётку ящика в AD и выключить её.

Скрипт:

$identity = "mailbox"
$alias = "mailbox"
# Пользователи, для которых нужно дать доступ
$users = "vasya","petya"

# Создаём ящик
Enable-Mailbox -Identity $identity -Shared -Alias $alias -Database 'database'

# Права на полный доступ
Foreach ($user in $users)
          {
          Add-MailboxPermission -Identity $identity -User "Domain\$user" -AccessRights 'FullAccess'
          }

# Права на отправить как
Foreach ($user1 in $users)
          {
          Add-ADPermission -Identity $identity -User "Domain\$user1" -ExtendedRights 'Send-as'
          }
# Удалить права можно такими командами:
# Remove-MailboxPermission -Identity 'mailbox' -User 'Domain\vasya' -InheritanceType 'All' -AccessRights 'FullAccess'
# Remove-ADPermission -Identity 'mailbox' -User 'Domain\petya' -InheritanceType 'All' -ExtendedRights 'send-as' -ChildObjectTypes $null -InheritedObjectType $null -Properties $null

Скопировать всех пользователей из одной группы в другую с помощью Powershell

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

Get-ADGroupMember "Domain Users" | ForEach-Object { Add-ADGroupMember "Group" -Members $_ }
Get-InboxRule –Mailbox "okazakova" | Select Name, Description | fl).count

Поиск писем в почтовых ящиках с помощью Powershell в Exchange 2010. Search-mailbox

Командлет Search-Mailbox используется для поиска по почтовым ящикам и копирования результатов в указанный целевой почтовый ящик, удаления сообщений из исходного почтового ящика или обеих задач сразу.

Чтобы воспользоваться в полной мере коммандлетом Search-mailbox, нужно добавить свою учётную запись в две группы Exchange:

Add-RoleGroupMember -Identity "Discovery Management" -Member admin
Add-RoleGroupMember -Identity "Mailbox Import Export Group" -Member admin

Стоит отметить, что если у вас стоит русский Exchange, то параметры SearchQuery нужно указывать тоже на русском - получено, отправлено, откого, кому, тема и т.д., иначе можно получить ошибку "Ключевое слово property не поддерживается"
Чтобы просмотреть журнал сообщений в результатах поиска перед их удалением, выполните командлет Search-Mailbox с параметром LogOnly.

1. Поиск по ящику d.adrianovskiy от "Бизнес-школа СКОЛКОВО", полученного с 18 по 19 ноября 2016, копирование найденных писем в ящик admin и папку test:

Search-mailbox -Identity "d.adrianovskiy" -SearchQuery {from:"Бизнес-школа СКОЛКОВО" Received: 18/11/2016..19/11/2016 } -TargetMailbox "admin" -LogLevel full -TargetFolder test

2. Параметр EstimateResultOnly позволяет показать только результат поиска:

Search-mailbox -Identity "mailboxuser"  -SearchQuery  отправлено:"1/01/2017..27/01/2017", получено:"1/01/2017..27/01/2017" -EstimateResultOnly

3. Поиск по всем ящикам:

Get-Mailbox -resultsize unlimited | Search-mailbox -SearchQuery 'subject:"Mail delivery failed" ... 

4. Поиск писем на конкретном сервере во всех ящиках:

Get-Mailbox –Server "Servername" –ResultSize unlimited | Search-Mailbox -SearchQuery ...

5. Поиск во всех почтовых ящиках компании с любыми типами вложений, содержащих слово Virus в названии. При этом сообщение журнала отправляется в почтовый ящик администратора.

Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery attachment:virus* -TargetMailbox admin -TargetFolder "SearchAndDeleteLog" -LogOnly -LogLevel Full

Ещё примеры поиска:

Search-mailbox -Identity "mailboxuser" -SearchQuery кому:"mail@mail.ru", отправлено:"1/13/2017..8/11/2016" -TargetMailbox "mail" -TargetFolder "Archive" -LogLevel Full
Search-mailbox -Identity "mailboxuser"  -SearchQuery  получено:"7/2/2017..9/2/2017", тема:"RE: Tema"  -TargetMailbox "mailbox" -TargetFolder "Archive" -LogLevel Full  
Search-mailbox -Identity "user"  -SearchQuery  получено:"3/02/2017", откого:"vasya@yandex.ru"  -TargetMailbox "admin" -TargetFolder "Archive" -LogLevel Full 

 

Поиск и удаление сообщений в Exchange из почтовых ящиков.

При использовании командлета Search-Mailbox с параметром DeleteContent сообщения окончательно удаляются из исходного почтового ящика. Перед окончательным удалением сообщений рекомендуется использовать параметр LogOnly для создания журнала сообщений, найденных в результатах поиска, или скопировать эти сообщения в другой почтовый ящик перед их удалением из исходного почтового ящика.

1. Поиск в ящике v.yurov по теме письма и удаление найденных писем:

Search-mailbox -Identity "v.yurov" -SearchQuery 'subject:"Mail delivery failed"' -DeleteContent -confirm:$false

2. В этом примере во всех почтовых ящиках организации выполняется поиск сообщений, содержащих строчку "User Audit" в теме, после чего журнал сообщений попадает администратору в ящик:

Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'Subject:"User Audit"' -TargetMailbox admin -TargetFolder "SearchLog" -LogOnly -LogLevel Full

3. Поиск во всех ящиках компании писем с адреса test@test.ru и удаление найденных писем без подтверждения:

Get-Mailbox -ResultSize unlimited | Search-Mailbox -SearchQuery 'from:test@test.ru' -DeleteContent -confirm:$false