Спрашивающий
PowerShell получение из писем логин и группу, добавить пользователя в группу AD

Вопрос
-
Добрый день
В почтовый ящике group@local.com в папку Входящие приходят письма от portal@local.com нужно в письмах найти строчки содержащие user: и group:
Строчка user: означает логин пользователя удалить user, строчка group: группу Active Directory в которую нужно добавить пользователя
После обработки письма письмо удалить6 апреля 2023 г. 13:47
Все ответы
-
# Установка параметров подключения к Exchange Server $exchangeServer = "mail.local.com" $username = "admin" $password = "pass" $securePassword = ConvertTo-SecureString $password -AsPlainText -Force $cred = New-Object System.Management.Automation.PSCredential ($username, $securePassword) $session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$exchangeServer/PowerShell/ -Authentication Kerberos -Credential $cred Import-PSSession $Session -AllowClobber # Параметры $groupEmailAddress = "group@local.com" $portalEmailAddress = "portal@local.com" # Получаем Inbox папку для указанного почтового ящика $inboxFolder = (Get-MailboxFolderStatistics $groupEmailAddress | ?{$_.FolderPath -eq "/Inbox"}).Name # Получаем все письма от указанного отправителя $mailItems = Get-MailboxFolderStatistics $groupEmailAddress -FolderScope $inboxFolder -IncludeOldestAndNewestItems | Where-Object {$_.Subject -match "$portalEmailAddress"} # Обработка каждого письма fоreach ($mailItem in $mailItems) { # Через русскую "о" написано так как форум ошибку выдавал # Получаем тело письма $mail = Get-Message -Identity $mailItem.FolderPath.ToString() + "/" + $mailItem.Subject.ToString() -ErrorAction Stop $mailBody = $mail.Body.ToString() # Находим строки со словами "user:" и "group:" $userLine = ($mailBody | Select-String -Pattern 'user:').Line.ToString() $groupLine = ($mailBody | Select-String -Pattern 'group:').Line.ToString() # Извлекаем логин пользователя и название группы $user = $userLine -replace 'user:', '' $group = $groupLine -replace 'group:', '' # Добавляем пользователя в группу Add-ADGroupMember -Identity $group -Members $user -ErrorAction Stop # Удаляем обработанное письмо Remove-Message -Identity $mail.Identity -Confirm:$false }
Содержание письма:
user: login
group: group_A
Отправляю письмо с portal@local.com на group@local.com с указанным содержанием.
Запускаю скрипт ошибок нет, но ничего не происходит пользователь в группу не добавляется, письмо не удаляется.
Подскажите где ошибки?
- Изменено Bitonmaks 6 апреля 2023 г. 15:05
6 апреля 2023 г. 13:48 -
Здравствуйте!
Попробуйте создать контрольный скрипт, где в секции "извлекаем..." добавьте строки $user и $group и прогоните скрипт. А действительно ли Вы получили тот результат, который хотите? Контролька покажет.
8 апреля 2023 г. 2:22 -
Добавил
Write-Host "Получение количества всех писем для почтового ящика $groupEmailAddress" $allMailItems = Get-MailboxFolderStatistics $groupEmailAddress -FolderScope $inboxFolder -IncludeOldestAndNewestItems | Where-Object {$_.Subject -ne $null} Write-Host "Количество всех писем: $($allMailItems.Count)"
Пишет 0 писем.
Запускаю команду через Exchange Management Shell показывает количество писем.
Где косячу?
10 апреля 2023 г. 14:26 -
$null это не число, возможно сравнение не работает, проверьте.12 апреля 2023 г. 1:51