【问题标题】:Send-Mailmessage foreach in body在正文中发送邮件消息
【发布时间】:2020-11-02 18:28:03
【问题描述】:

我有一个脚本,它可以在变量中返回一些用户名。我现在需要一封包含每个用户特定文本的邮件(在一封邮件中)。 我得到用户名“abcdef,popefp,nvmwmn”

假设我需要文本:

你好 abcdef 你好popefp 你好 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"

【问题讨论】:

  • 我不会那样做。 [grin] 相反,在消息中使用通用的群组问候语,然后将各种电子邮件地址放在 TO、CC 或 BCC 地址行中。
  • 这只是一个例子,邮件是给另一个系统管理员的,里面会有一个代码+用户名,所以他可以复制粘贴。
  • 那我不明白你到底想要什么。 [脸红]我会回去潜伏,让其他更聪明的人帮助你......祝你好运! [咧嘴]

标签: powershell foreach send mailmessage


【解决方案1】:

感谢您的回复,我已经能够修复它。

$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

【讨论】:

    【解决方案2】:

    我相信您正在寻找类似下面的内容。基本上,您需要将您的用户名列表分配给一个变量。然后,您将遍历该变量以发出您的消息。还有其他方法可以做到这一点,但我尽量让它接近你当前的脚本。

      $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"
    

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 2016-09-07
      • 1970-01-01
      • 1970-01-01
      • 2016-12-17
      • 2014-04-23
      • 2014-06-09
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多