我有一个文件" check1.txt,其内容如下
user1
user2
user3
我想从文件中取出这个字符串并放入一个像这样的变量
"user1@abc.com","user2@abc.com","user3@abc.com"
我使用这段代码:
$variable1 = """"
$variable2 = (Get-content -path "C:\check1.txt") -join "@abc.com"","""
$variable3 = $variable2 + "@abc.com"""
$variable4 = $variable1 + $variable3
[String[]] $emailTo=$variable4
[String[]] $emailCc="abcd6@xyz.com","abcd1@xyz.com"
write-host $variable4 +"hi"
write-host $emailTo +"To"
write-host $emailCc +"Cc"
Send-MailMessage -To $emailTo -Subject $subject -Body $Body -cc $emailCc -SmtpServer $smtpServer -From $emailFrom -Priority $priority
但我得到的错误如下:
"user1@abc.com","user2@abc.com","user3@abc.com" +hi
"user1@abc.com","user2@abc.com","user3@abc.com" +To
abcd@xyz.com abcd1@xyz.com +Cc
Send-MailMessage : The specified string is not in the form required for an e-mail address.
At C:\Users\Administrator\Desktop\DisconnectedSession\mail.ps1:31 char:17
+ Send-MailMessage <<<< -To $emailTo -Subject $subject -Body $Body -cc $emailCc -SmtpServer $smtpServer -From $emailF
rom -Priority $priority
+ CategoryInfo : InvalidType: (:) [Send-MailMessage], FormatException
+ FullyQualifiedErrorId : FormatException,Microsoft.PowerShell.Commands.SendMailMessage
问题是变量$ emailTo和$ emailCc的格式与我定义的格式相同,但是对于$ emailTo,脚本的解释方式不同,而对于$ emailCc,它的解释方式不同导致scipt失败。 任何人都可以建议为$ emailTo做什么,因为$ emailCc现在工作正常,无论分配给它什么?
答案 0 :(得分:1)
我不确定你要做什么,但我认为你的$emailTo
变量是错误的 - 它需要是一个字符串数组。
您可以在文件中构建它:
$emailTo = @()
Get-content -path "C:\check1.txt" | % { $emailTo += ,"$_@abc.com" }
这将创建一个空数组,然后迭代您的用户列表,将域附加到每个用户名并将电子邮件地址添加到数组