Загрузка данных


# Импорт модуля ActiveDirectory (требуется для работы с AD)
Import-Module ActiveDirectory

# Путь к CSV‑файлу
$csvPath = "C:\path\to\your\file.csv"

# Чтение CSV‑файла
$users = Import-Csv -Path $csvPath

# Массив для логирования результатов
$log = @()

foreach ($user in $users) {
    $displayName = $user.DisplayName
    $userName = $user.UserName

    # Извлечение последнего слова из DisplayName (предполагается, что это отчество)
    $words = $displayName -split '\s+' | Where-Object { $_ -ne '' }  # Разбиваем на слова и убираем пустые элементы

    if ($words.Count -ge 3) {
        $patronymic = $words[-1]  # Последнее слово — отчество
    } else {
        Write-Warning "Недостаточно слов в DisplayName для пользователя $userName (DisplayName: $displayName). Ожидалось минимум 3 слова (ФИО)."
        $log += [PSCustomObject]@{
            UserName = $userName
            DisplayName = $displayName
            Status = "Failed - Insufficient words in DisplayName (expected at least 3: Surname Name Patronymic)"
        }
        continue
    }

    try {
        # Поиск пользователя в AD по UserName (SamAccountName)
        $adUser = Get-ADUser -Identity $userName -ErrorAction Stop

        # Обновление атрибута middleName
        Set-ADUser -Identity $adUser.SamAccountName -MiddleName $patronymic

        Write-Host "Успешно обновлено отчество для $userName: $patronymic" -ForegroundColor Green
        $log += [PSCustomObject]@{
            UserName = $userName
            DisplayName = $displayName
            Patronymic = $patronymic
            Status = "Success"
        }
    } catch {
        Write-Error "Ошибка при обработке пользователя $userName: $($_.Exception.Message)"
        $log += [PSCustomObject]@{
            UserName = $userName
            DisplayName = $displayName
            Status = "Error - $($_.Exception.Message)"
        }
    }
}

# Сохранение лога в CSV
$log | Export-Csv -Path "C:\path\to\log.csv" -NoTypeInformation -Encoding UTF8
Write-Host "Обработка завершена. Лог сохранён в C:\path\to\log.csv" -ForegroundColor Cyan