Send-Mailmessage foreach в теле - PullRequest
       47

Send-Mailmessage foreach в теле

0 голосов
/ 13 июля 2020

У меня есть сценарий, который возвращает мне несколько имен пользователей в переменной. Теперь мне нужно письмо с конкретным текстом c для каждого пользователя (в одном письме). Я получаю имена пользователей «abcdef, popefp, nvmwmn»

Допустим, мне нужен текст:

Hello abcdef Hello popefp Hello nvmwmn

Как мне создать foreach из мой код? Я написал $ help там, где я потерялся.

   Get-ADObject -SearchBase "OU=Mailbox,OU=Global,OU=Group,OU=1,DC=test,DC=it,DC=nl" -Filter 'ObjectClass -eq "group"' | Select Name | ForEach-Object -Process {
  $username = ($_.Name -replace "G_test_Mailbox_", "") #>> "C:\temp\export-adusers.csv"
  $enabled = (Get-ADUser -Filter ('SamAccountName -eq "'+$username+'"') | Select-Object Enabled)
  if(!($enabled).Enabled){
  #if($enalbed -eq $false){
    $username  
  }
    
}

$emailbody = foreach ($help in $username){
"hello $username"}

$PSEmailServer = "smtp.wow.nl"
  
  Send-MailMessage -to "getthemail@wow.nl" -From "test@wow.nl" -Subject "mailbox" -Body "$emailbody"

Ответы [ 2 ]

1 голос
/ 13 июля 2020

Я полагаю, вы ищете что-то подобное ниже. По сути, вам нужно присвоить список имен пользователей переменной. Затем вы пройдете через эту переменную oop, чтобы составить ваше сообщение. Есть и другие способы сделать это, но я постарался сохранить его ближе к вашему текущему сценарию.

  $users = Get-ADObject -SearchBase "OU=Mailbox,OU=Global,OU=Group,OU=1,DC=test,DC=it,DC=nl" -Filter 'ObjectClass -eq "group"' | Select Name | ForEach-Object -Process {
  $username = ($_.Name -replace "G_test_Mailbox_", "") #>> "C:\temp\export-adusers.csv"
  $enabledUsers = (Get-ADUser -Filter ('SamAccountName -eq "'+$username+'"') | Select-Object Enabled)
  if(!($enabled).Enabled){
  #if($enalbed -eq $false){
    $username  
  }
    
}

$emailbody = foreach ($user in $users){
"hello $user"}

$PSEmailServer = "smtp.wow.nl"
  
  Send-MailMessage -to "getthemail@wow.nl" -From "test@wow.nl" -Subject "mailbox" -Body "$emailbody"

Чтобы избежать повторения имен пользователей дважды, вы можете просто использовать приведенный ниже сценарий.

  $emailbody = ""

  
  Get-ADObject -SearchBase "OU=Mailbox,OU=Global,OU=Group,OU=1,DC=test,DC=it,DC=nl" -Filter 'ObjectClass -eq "group"' | Select Name | ForEach-Object -Process {
  $username = ($_.Name -replace "G_test_Mailbox_", "") #>> "C:\temp\export-adusers.csv"
  $enabledUsers = (Get-ADUser -Filter ('SamAccountName -eq "'+$username+'"') | Select-Object Enabled)
  if(!($enabled).Enabled){
    $emailbody = $emailbody + "Hello $username "
  }
    
}

$PSEmailServer = "smtp.wow.nl"
  
  Send-MailMessage -to "getthemail@wow.nl" -From "test@wow.nl" -Subject "mailbox" -Body "$emailbody"
0 голосов
/ 13 июля 2020

Спасибо за ответ, я уже смог это исправить.

$mail = @()

Get-ADObject -SearchBase "OU=Mailbox,OU=Global,OU=Group,OU=1,DC=test,DC=it,DC=nl" -Filter 'ObjectClass -eq "group"' | Select Name | ForEach-Object {
  $username = ($_.Name -replace "G_test_Mailbox_", "") #>> "C:\temp\export-adusers.csv"
  $mail += Get-ADUser -Filter ('SamAccountName -eq "'+$username+'"') -Properties * | Where-Object {$_.Enabled -eq $False} | Select-Object SamAccountName 
  
}


$mail.SamAccountName | ForEach-Object{
$emailbody = $emailbody + "Remove-ADGroup -Identity g_test_mailbox" + $_ + "`r`n"
}

$PSEmailServer = "smtp.wow.nl"
  
 Send-MailMessage -to "test@wow.nl" -From "test2@wow.nl" -Subject "Mailbox" -Body $emailbody
...