Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell 在正文中为每个邮件发送邮件消息_Powershell_Foreach_Send_Mailmessage - Fatal编程技术网

Powershell 在正文中为每个邮件发送邮件消息

Powershell 在正文中为每个邮件发送邮件消息,powershell,foreach,send,mailmessage,Powershell,Foreach,Send,Mailmessage,我有一个脚本,它在一个变量中返回几个用户名。我现在需要一封邮件,每个用户都有一个特定的文本(在一封邮件中)。 我得到了用户名“abcdef,popefp,nvmwmn” 假设我需要文本: 你好,abcdef 你好,波普 你好,nvmwmn 如何用代码创建foreach?我在迷路的地方写了$help Get-ADObject -SearchBase "OU=Mailbox,OU=Global,OU=Group,OU=1,DC=test,DC=it,DC=nl" -Filt

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

假设我需要文本:

你好,abcdef 你好,波普 你好,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"

我相信你正在寻找下面这样的东西。基本上,您需要将您的用户名列表分配给一个变量。然后,您将循环该变量以生成消息。还有其他方法可以做到这一点,但我试图让它接近您当前的脚本

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

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

$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

我不会那样做。[grin]相反,在邮件中使用通用的组问候语,然后将不同的电子邮件地址放在收件人、抄送或密件抄送地址行中。这只是一个例子,邮件是给另一个系统管理员的,其中将包含一个代码+用户名,以便他可以复制粘贴。然后我无法理解你到底想从中得到什么。[脸红]我会回到潜伏状态,让其他更聪明的人帮助你。。。祝你好运[咧嘴笑]