Создание папки и правило для данной папки для всех пользователей.

Bravnik

Почетный гость
27.03.2025
18
2
3
MSK
Доброго дня форумчане.
Итак, есть задача, создать для всех почтовых пользователей домена папку в почтовом ящике, а так же создать правило переноса писем под данную папку.
Кто может помочь с реализацией?
 
Администрирование сервисов
# 1. Укажите название папки
$FolderName = "Название_папки" # Например, "Отчеты" или "Важные"
$ParentPath = ":\Inbox" # Куда вложить папку (в папку "Входящие")
$FullPathToFolder = "Входящие\$FolderName" # Путь для правила (логическое имя)

# 2. Условие для правила
# Например, перемещать письма от конкретного отдела или со словом "Срочно" в теме.
# В примере ниже: если в теме есть слово "Срочно"
$RuleCondition = @{
SubjectContainsWords = "Срочно"
}

# 3. Получаем список всех почтовых ящиков пользователей
$Mailboxes = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox

Write-Host "Начинаем обработку $($Mailboxes.Count) ящиков..." -ForegroundColor Green

foreach ($mbx in $Mailboxes) {
Write-Host "Обработка: $($mbx.UserPrincipalName)" -ForegroundColor Yellow

# --- Часть 1: Создание папки ---
# Проверяем, существует ли папка, чтобы избежать ошибки
$folderPath = "$($mbx.Alias):$ParentPath\$FolderName"
$existingFolder = Get-MailboxFolder -Identity $folderPath -ErrorAction SilentlyContinue

if (-not $existingFolder) {
try {
# КЛЮЧЕВОЙ МОМЕНТ: указываем алиас ящика через двоеточие перед путём
New-MailboxFolder -Parent "$($mbx.Alias):$ParentPath" -Name $FolderName
Write-Host " [OK] Папка создана." -ForegroundColor Green
}
catch {
Write-Host " [FAIL] Ошибка создания папки: $_" -ForegroundColor Red
continue # Переходим к следующему ящику, если не удалось создать папку
}
} else {
Write-Host " [!] Папка уже существует, пропускаем создание." -ForegroundColor Gray
}

# --- Часть 2: Создание правила ---
$RuleName = "Переместить в $FolderName (администратор)"

# Удаляем старое правило с таким же именем, если оно существует
Get-InboxRule -Mailbox $mbx.Identity -ErrorAction SilentlyContinue |
Where-Object { $_.Name -eq $RuleName } |
Remove-InboxRule -Confirm:$false

try {
# Создаём новое правило
# -MoveToFolder обязательно указываем в формате "Алиас:\Папка\Подпапка"
New-InboxRule -Mailbox $mbx.Identity `
-Name $RuleName `
@RuleCondition `
-MoveToFolder "$($mbx.Alias):\$FullPathToFolder"

Write-Host " [OK] Правило создано." -ForegroundColor Green
}
catch {
Write-Host " [FAIL] Ошибка создания правила: $_" -ForegroundColor Red
}
}

Write-Host "Готово." -ForegroundColor Green
 
Последнее редактирование модератором: