我搜索了很多论坛,他们确实解释了如何做到这一点,但技术语言太难理解,因为我对powershell很新。我希望这一步一步向我解释(婴儿步骤)。我想在批处理文件(.bat)中运行此powershell命令。我有一个批处理文件,每周进行一次robocopy备份,我希望批处理文件在备份完成后给我发送电子邮件。我唯一的问题是凭据,我得到一个弹出框询问用户名和密码。当我输入此信息时,电子邮件将成功发送。这就是我所拥有的;
使用:powershell V2.0 Windows 7 Ultimate
Powershell -command send-mailmessage -to emailadress@provider.com -from emailaddress@provider.com -smtp smtp.broadband.provider.com -usessl -subject 'backup complete'
答案 0 :(得分:5)
$from = "example@mail.com"
$to = "example@mail.com"
$smtp = "smtpAddress.com"
$sub = "hi"
$body = "test mail"
$secpasswd = ConvertTo-SecureString "yourpassword" -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential($from, $secpasswd)
Send-MailMessage -To $to -From $from -Subject $sub -Body $body -Credential $mycreds -SmtpServer $smtp -DeliveryNotificationOption Never -BodyAsHtml
答案 1 :(得分:2)
您可以在同一个命令中传递凭证对象 - 这样可以避免弹出:
Powershell -Command 'Send-MailMessage -to "emailadress@provider.com" -from "emailaddress@provider.com" -smtp "smtp.broadband.provider.com" -usessl -subject "backup complete" -credential (new-object System.Net.NetworkCredential("user","pass","domain"))'
我建议以更安全的格式存储用户名/密码,但这应该可以解决问题。
答案 2 :(得分:0)
我不确定您是否可以使用send-mailmessage命令进行SMTP身份验证。但是,您可以通过SMTP服务器发送消息,该服务器需要使用Net.Mail.SmtpClient对象和System.Net.Mail.MailMessage对象进行身份验证。请参阅How to pass credentials to the Send-MailMessage command for sending emails以获取一个好例子。
答案 3 :(得分:0)
你会看到你可以通过参数-credential domain01\admin01
如果您不想要任何提示,请查看此处Using PowerShell credentials without being prompted for a password