Windows PowerShell автоматизация

Это раздел с примерами PowerShell скриптов которые можно использовать для связи Почта73 со своим Active Directory. Создание новых учетной записей в AD, их обновление сразу может находить отражение в учетных записях почты. 

Не нужно делать VPN туннель от вашей AD. Главное для работы - наличие ключа и чтобы сервер AD мог ходить в интернет. 

Файлы для скачивания

Config.ps1

Sync-MailConsoleAD.ps1

Install-SyncSchedule.ps1 

Системные требования

  • OS: Windows Server 2012 R2 или новее
  • PowerShell: 5.0 или новее
  • Administrator Rights: Требуются права администратора

Модули PowerShell

# Установить модуль Active Directory (если не установлен)
Add-WindowsFeature RSAT-AD-PowerShell

или

# Для Windows 10/11
Install-WindowsFeature RSAT-AD-PowerShell

 

Установка

Шаг 1: Подготовка папки

# Создать папку для скриптов
New-Item -ItemType Directory -Path "C:\MailConsoleSyncScripts" -Force

# Создать папку для логов
New-Item -ItemType Directory -Path "C:\ProgramData\MailConsoleSync\Logs" -Force

Шаг 2: Копирование скриптов

  1. Скопировать следующие файлы в папку C:\MailConsoleSyncScripts:
    • Sync-MailConsoleAD.ps1
    • Install-SyncSchedule.ps1
    • Config.ps1

Шаг 3: Настройка конфигурации

Отредактировать Config.ps1:

# Открыть файл
notepad C:\MailConsoleSyncScripts\Config.ps1

Установить следующие параметры:

# API Configuration
$script:ApiUrl = "https://api.mail73.ru"
$script:ApiKey = "YOUR_API_KEY_HERE"  # Получить в Settings → API
$script:NodeId = 1                     # ID ноды в Mail Console
$script:EmailDomain = "example.com"    # Домен для почты

# Active Directory Configuration
$script:AdDomain = "example.local"     # AD домен
$script:AdSearchBase = "OU=Users,DC=example,DC=local"  # Базовый DN

Конфигурация

Config.ps1 - Основные параметры

API Configuration

$script:ApiUrl = "https://api.mail73.ru"
$script:ApiKey = "your_api_key"
$script:NodeId = 1
$script:EmailDomain = "example.com"

Active Directory Configuration

$script:AdDomain = "example.local"
$script:AdSearchBase = "OU=Users,DC=example,DC=local"
$script:AdUserFilter = "(enabled=true)"  # Фильтр для поиска пользователей

Sync Options

$script:AutoCreateEmail = $true        # Создавать новые email аккаунты
$script:AutoDeleteEmail = $false       # Удалять при отключении в AD
$script:EmailPrefix = ""               # Префикс для email
$script:GeneratePassword = $true       # Генерировать пароль
$script:PasswordLength = 16            # Длина пароля
$script:DefaultQuota = 1000            # Квота в МБ

Logging

$script:LogPath = "C:\ProgramData\MailConsoleSync\Logs"
$script:LogRetentionDays = 30
$script:LogSuccess = $true
$script:LogErrors = $true
$script:LogDebug = $false

Использование

Запустить синхронизацию вручную

# Полная синхронизация
cd C:\MailConsoleSyncScripts
.\Sync-MailConsoleAD.ps1

# Только создание новых аккаунтов
.\Sync-MailConsoleAD.ps1 -Action Create

# Только удаление аккаунтов отключенных пользователей
.\Sync-MailConsoleAD.ps1 -Action Delete

# Тестовый режим (без реальных изменений)
.\Sync-MailConsoleAD.ps1 -TestMode

# Показать отчет
.\Sync-MailConsoleAD.ps1 -Action Report

Параметры скрипта

Параметр Тип Описание
-ConfigPath string Путь к Config.ps1 (по умолчанию: .\Config.ps1)
-Action string Действие: Sync, Create, Update, Delete, Report
-TestMode switch Запустить без реальных изменений
-Verbose switch Подробный вывод

Расписание

Регистрация в Windows Task Scheduler

# Запустить от администратора
.\Install-SyncSchedule.ps1 `
    -ScriptPath "C:\MailConsoleSyncScripts\Sync-MailConsoleAD.ps1" `
    -IntervalMinutes 60 `
    -StartTime "08:00"

Параметры установки

Параметр Описание
-ScriptPath Полный путь к Sync-MailConsoleAD.ps1
-ConfigPath Путь к Config.ps1 (по умолчанию в папке скрипта)
-IntervalMinutes Интервал запуска в минутах (по умолчанию: 60)
-TaskName Имя задачи (по умолчанию: "Mail Console AD Sync")
-StartTime Время первого запуска в формате HH:mm
-RunAsUser Пользователь для запуска (по умолчанию: SYSTEM)

Управление задачей

# Просмотр статуса
Get-ScheduledTask -TaskName "Mail Console AD Sync"

# Запустить вручную
Start-ScheduledTask -TaskName "Mail Console AD Sync"

# Остановить
Stop-ScheduledTask -TaskName "Mail Console AD Sync"

# Удалить задачу
Unregister-ScheduledTask -TaskName "Mail Console AD Sync" -Confirm:$false

# Показать историю запусков
Get-ScheduledTaskInfo -TaskName "Mail Console AD Sync"