Powershell 在正文中为每个邮件发送邮件消息
我有一个脚本,它在一个变量中返回几个用户名。我现在需要一封邮件,每个用户都有一个特定的文本(在一封邮件中)。 我得到了用户名“abcdef,popefp,nvmwmn” 假设我需要文本: 你好,abcdef 你好,波普 你好,nvmwmn 如何用代码创建foreach?我在迷路的地方写了$helpPowershell 在正文中为每个邮件发送邮件消息,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
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]相反,在邮件中使用通用的组问候语,然后将不同的电子邮件地址放在收件人、抄送或密件抄送地址行中。这只是一个例子,邮件是给另一个系统管理员的,其中将包含一个代码+用户名,以便他可以复制粘贴。然后我无法理解你到底想从中得到什么。[脸红]我会回到潜伏状态,让其他更聪明的人帮助你。。。祝你好运[咧嘴笑]