Arrays PowerShell从计划任务向多个收件人发送邮件消息

Arrays PowerShell从计划任务向多个收件人发送邮件消息,arrays,powershell,arguments,Arrays,Powershell,Arguments,我编写了自己的函数,以HTML格式向最终用户发送电子邮件。如果我在脚本中使用以下格式的字段to:,则这对一个或多个用户来说是完美的: $MailTo = "<User1@domain.com>", "<User2@domain.com>" 即使我尝试其中一个参数,也只会发送一封邮件: -MailTo "<User1@domain.com>, <User2@domain.com>" -MailTo "User1@domain.com, User2@

我编写了自己的函数,以HTML格式向最终用户发送电子邮件。如果我在脚本中使用以下格式的字段
to:
,则这对一个或多个用户来说是完美的:

$MailTo = "<User1@domain.com>", "<User2@domain.com>"
即使我尝试其中一个参数,也只会发送一封邮件:

-MailTo "<User1@domain.com>, <User2@domain.com>"
-MailTo "User1@domain.com, User2@domain.com"
要从Windows中的计划任务运行此任务,可以使用以下格式:

powershell "S:\Script\Send_Mail.ps1" -ImportFile "S:\Script\Servers.csv" -MailTo "User1@domain.com", "User2@domain.com"
powershell -ExecutionPolicy Bypass "S:\Script\Send_Mail.ps1" -ImportFile "S:\Script\Servers.csv" -MailTo "User1@domain.com", "User2@domain.com"
这些格式不被接受,将导致语法错误或并非所有用户都会收到他们的电子邮件:

powershell -File "S:\Script\Send_Mail.ps1" -ImportFile "S:\Script\Servers.csv" -MailTo "User1@domain.com, User2@domain.com"
powershell -File "S:\Script\Send_Mail.ps1" -ImportFile "S:\Script\Servers.csv" -MailTo '"User1@domain.com", "User2@domain.com"'
powershell "S:\Script\Send_Mail.ps1" -ExecutionPolicy Bypass -ImportFile "S:\Script\Servers.csv" -MailTo "User1@domain.com, User2@domain.com"
上面的所有行都可以粘贴到PowerShell ISE中进行测试,这样您就可以看到错误,而不必依赖计划任务来告诉您。我希望它能帮助你们,因为它让我很害怕:P

试试这样:

powershell -File "S:\Script\Send_Mail.ps1" -MailTo "'User1@domain.com', 'User2@domain.com'"
$emailTo = @('Name <name1@domain.com>', 'Name2 <name2@domain.com>')
您可以这样定义“To”变量:

powershell -File "S:\Script\Send_Mail.ps1" -MailTo "'User1@domain.com', 'User2@domain.com'"
$emailTo = @('Name <name1@domain.com>', 'Name2 <name2@domain.com>')
$emailTo=@('Name','Name2')
然后您可以在函数Send MailMessage中使用它

例如:

$servername = hostname
$smtpserver = 'localhost'
$emailTo = @('username1 <user1@dom.com>', 'username2<user2@dom.com>')
$emailFrom = 'SomeServer <user3@dom.com>'
Send-MailMessage -To $emailTo -Subject 'Low available memory' -Body 'Warning' -SmtpServer $smtpserver -From $emailFrom
$servername=hostname
$smtpserver='localhost'
$emailTo=@('username1','username2')
$emailFrom='SomeServer'
发送邮件-至$emailTo-主题“可用内存不足”-正文“警告”-SmtpServer$SmtpServer-发件人$emailFrom

这里的问题是解析命令行。您是否尝试过这样发送参数:-Mailto“user1@domain.com,user2@domain.com“是的,我试过了,同样的问题。两个用户中只有一个收到邮件。#感谢您的帮助。我已经用整个脚本更新了这个问题。现在,它抱怨指定的
字符串的格式不是电子邮件地址所需的格式。
尝试删除
这样做,然后它只收到一个收件人。我整个上午都在测试这个:P很奇怪。。也许这是我在脚本中声明参数的方式?@DarkLite1你使用的和我的答案完全一样吗?有双引号,包括电子邮件地址,每一个都在单引号内?是的,我甚至复制粘贴了多次,以确保。我不得不为主题和主体添加额外的论据。我所做的是你的行+
-主题“测试”-消息1“测试”
。我得到的错误是
sendmailmessage:参数或参数中的语法错误。服务器响应
$servername = hostname
$smtpserver = 'localhost'
$emailTo = @('username1 <user1@dom.com>', 'username2<user2@dom.com>')
$emailFrom = 'SomeServer <user3@dom.com>'
Send-MailMessage -To $emailTo -Subject 'Low available memory' -Body 'Warning' -SmtpServer $smtpserver -From $emailFrom