Can';不要通过Powershell发送电子邮件

Can';不要通过Powershell发送电子邮件,powershell,windows-server-2008-r2,Powershell,Windows Server 2008 R2,我一直在尝试使用这个脚本作为一个简单的布尔值来检查文件,并发送一封成功或失败的电子邮件。但我一辈子也弄不明白为什么它不起作用 有什么想法吗 $SMTPServer = "smtp.gmail.com" $SMTPPort = "587" $Username = "xxxx@xxxxx.com" $Password = "xxxxxxx" $to = "xxx@xxxxx.net" if ( ([System.Io.fileinfo]'E:\GD Backup Folder\backup\Bac

我一直在尝试使用这个脚本作为一个简单的布尔值来检查文件,并发送一封成功或失败的电子邮件。但我一辈子也弄不明白为什么它不起作用

有什么想法吗

$SMTPServer = "smtp.gmail.com"
$SMTPPort = "587"
$Username = "xxxx@xxxxx.com"
$Password = "xxxxxxx"
$to = "xxx@xxxxx.net"

if ( ([System.Io.fileinfo]'E:\GD Backup Folder\backup\Backup_*.zip').LastWriteTime.Date -ne [datetime]::Today )    {
            $message = New-Object System.Net.Mail.MailMessage
            $message.subject = "Backup Successful"
            $message.body = "Backup was successful."
            $message.to.add($to)
            $message.from = $username

            $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
            $smtp.EnableSSL = $true
            $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
            $smtp.send($message)
            write-host "Mail Sent"
}else{
            $message = New-Object System.Net.Mail.MailMessage
            $message.subject = "Backup Unsuccessful"
            $message.body = "Backup was NOT Successful - File Not Found"
            $message.to.add($to)
            $message.from = $username

            $smtp = New-Object System.Net.Mail.SmtpClient($SMTPServer, $SMTPPort);
            $smtp.EnableSSL = $true
            $smtp.Credentials = New-Object System.Net.NetworkCredential($Username, $Password);
            $smtp.send($message)
            write-host "Mail Sent"
}

使用powershell发送带有附件的电子邮件-

     $EmailTo = "udit043.ur@gmail.com"  // abc@domain.com
     $EmailFrom = "udit821@gmail.com"  //xyz@gmail.com
     $Subject = "zx"  //subject
     $Body = "Test Body"  //body of message
     $SMTPServer = "smtp.gmail.com" 
     $filenameAndPath = "G:\abc.jpg"  //attachment
     $SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
     $attachment = New-Object System.Net.Mail.Attachment($filenameAndPath)
     $SMTPMessage.Attachments.Add($attachment)
     $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
     $SMTPClient.EnableSsl = $true 
     $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("udit821@gmail.com", "xxxxxxxx");    // xxxxxx-password
     $SMTPClient.Send($SMTPMessage)

你是怎么做到这一点的?[System.Io.fileinfo]'E:\GD Backup Folder\Backup\Backup.*.zip'它只是在查找与今天日期相同的文件,如果是或否,它将发送一封电子邮件。也许我不能在那里使用通配符?请尝试在命令行上运行该代码片段。[System.Io.fileinfo]'E:\GD Backup Folder\Backup\Backup.*.zip'Oh。。正当所以我不能在那个位置使用通配符。真奇怪,它以前从来没有给过我一个错误。它就像正常一样运行。我想我会用简单的方法来做,而不是试图匹配一个特定的文件。我认为只查看所有文件会更容易。我的文件是在一个单独的脚本中生成的,文件名如下:Lytec_Backup_02192015.zip我只是想验证最后一个,即今天的,是否存在,然后发送一封电子邮件,说明是或否。实际上,无论出于何种原因,我都无法让它正常工作。我早就试过你的方法了。我最终用Python重写了整件事。第一次尝试:耸耸肩: