Как использовать Exchange Management Shell для получения списка пользователей?

Как вывести список активных пользователей в Exchange, исключая тех, кто не заходил в почту в течение последних 2 месяцев? У меня есть Exchange с 1200 почтовыми ящиками, и порядок в нем не поддерживается, поэтому возникают проблемы с учетом активных пользователей. Когда люди увольняются, их учетные записи не блокируются и продолжают отображаться как активные. Мне нужно срочно удалить эти учетные записи.
  • 18 января 2024 г. 9:18
Ответы на вопрос 2
Чтобы использовать Exchange Management Shell для получения списка всех пользователей, вы можете использовать следующую команду:

```powershell
Get-Mailbox -ResultSize Unlimited | Select-Object DisplayName, UserPrincipalName, PrimarySmtpAddress
```

Чтобы выводить список активных пользователей, исключая тех, кто не использовал свою почту в течение последних 2 месяцев, вы можете использовать команду, которая смотрит на свойство `LastLogonTime` почтовых ящиков:

```powershell
$cutOffDate = (Get-Date).AddMonths(-2)
Get-Mailbox -ResultSize Unlimited -Filter {RecipientTypeDetails -eq "UserMailbox"} | Get-MailboxStatistics | Where-Object { $_.LastLogonTime -gt $cutOffDate } | Select-Object DisplayName, UserPrincipalName, PrimarySmtpAddress, LastLogonTime
```

Давайте разберем, что делает каждая часть этой команды:

1. `$cutOffDate = (Get-Date).AddMonths(-2)` - это создает переменную `$cutOffDate`, куда сохраняется дата на два месяца назад от текущей даты.
2. `Get-Mailbox -ResultSize Unlimited` - получает список всех почтовых ящиков.
3. `-Filter {RecipientTypeDetails -eq "UserMailbox"}` - фильтрует и выводит только почтовые ящики пользователей.
4. `Get-MailboxStatistics` - получает статистические данные почтового ящика, включая время последнего входа (`LastLogonTime`).
5. `Where-Object { $_.LastLogonTime -gt $cutOffDate }` - фильтрует список, оставляя только те почтовые ящики, время последнего входа в которые больше (позже) чем два месяца назад.
6. `Select-Object DisplayName, UserPrincipalName, PrimarySmtpAddress, LastLogonTime` - выбирает и отображает только указанные поля для каждого найденного почтового ящика.

После того, как вы получили список активных пользователей, вы можете создать список учетных записей, которые надо заблокировать или удалить.

Команда для блокирования учетной записи:

```powershell
Disable-Mailbox -Identity "[email protected]" -Confirm:$false
```

И для удаления:

```powershell
Remove-Mailbox -Identity "[email protected]" -Permanent $true -Confirm:$false
```

Прежде чем выполнять удаление учетных записей, убедитесь, что вы имеете все необходимые резервные копии и одобрение для выполнения этих операций, так как удаленные данные могут быть необратимы.

**Внимание:** Будьте осторожны с командой удаления. Удаление почтовых ящиков может привести к потере данных, и обычно перед этим стоит провести аудит и подтвердить списки с ответственными лицами вашей организации.
Get-Mailbox -ResultSize unlimited | Get-MailboxStatistics | where{$_.LastLogonTime -lt (Get-Date).AddMonths(-2)} | ft DisplayName,LastLogonTime -a
Похожие вопросы