我正在尝试创建一个批处理文件,该文件将创建一个将通过PowerShell发送电子邮件的文件。它做了很多事情,但电子邮件只是它的一小部分。以下是我到目前为止的情况:
REM Creates batch file with contents of the powershell script
echo "I need to add the below powershell script" > email.bat
echo "into email.bat with all the quotes included">> email.bat
echo "like what I'm doing now with appending text">> email.bat
REM powershell script to send email.
$smtp = new-object Net.Mail.SmtpClient("smtp.gmail.com")
if( $Env:SmtpUseCredentials -eq "true" ) {
$credentials = new-object Net.NetworkCredential("username","password")
$smtp.Credentials = $credentials
}
$objMailMessage = New-Object System.Net.Mail.MailMessage
$objMailMessage.From = "myemail@gmail.com"
$objMailMessage.To.Add("whereImsendingto@gmail.com")
$objMailMessage.Subject = "Logs for today"
$objMailMessage.Body = "(the logs)"
$smtp.send($objMailMessage)
在批处理中,如果我添加的内容没有引号,我可以将文本附加到另一个文件,但是我需要添加包含引号的文本。
答案 0 :(得分:0)
为什么不简单地回复没有引号并使用插入符号<>|&
和双百分号来转义可能的字符^
?
在(代码块)中,您还要转义括号^)
@Echo off
( Echo:$smtp = new-object Net.Mail.SmtpClient("smtp.gmail.com"^)
Echo:
Echo:if( $Env:SmtpUseCredentials -eq "true" ^) {
Echo: $credentials = new-object Net.NetworkCredential("username","password"^)
Echo: $smtp.Credentials = $credentials
Echo:}
Echo:$objMailMessage = New-Object System.Net.Mail.MailMessage
Echo:$objMailMessage.From = "myemail@gmail.com"
Echo:$objMailMessage.To.Add("whereImsendingto@gmail.com"^)
Echo:$objMailMessage.Subject = "Logs for today"
Echo:$objMailMessage.Body = "(the logs^)"
Echo:
Echo:$smtp.send($objMailMessage^)
) > "SomeFile.ps1"