繁体   English   中英

SBS 2011上的Powershell计划不会发送电子邮件

[英]Powershell Schedule on SBS 2011 won't send e-mail

我创建了一个Powershell脚本,试图将其作为计划任务运行。 如果我在Powershell中运行脚本,它将运行正常并发送电子邮件。 但是,如果我将其作为计划任务运行,则它看起来像在运行,并且不发送电子邮件,但在计划代码中给出了0x0。 电子邮件功能之后,我也睡了10秒钟。 我已经在我的Windows 7计算机上设置了相同的脚本作为计划任务,它可以正常运行并按预期方式以及在Windows 8家用计算机上发送电子邮件。

该脚本检查文件夹中的文件,如果有文件存在,它将检查最旧文件的年龄,如果文件已超过60分钟,则会发送电子邮件警报,否则不执行任何操作并退出。

任何想法表示赞赏。

$FilePath = "C:\path1\"
$age = 60

function send-email {
$EmailFrom = "email@gmail.com"
$EmailTo = "email@email.co.uk" 
$Subject = "File Alert" 
$Body = "Check the file folder, files are over 60 minutes old. File = " + "$filepath" + "$OldestFile" +" "+ "Minutes = " + "$MinutesTrunc"
$SMTPServer = "smtp.gmail.com" 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("username", "password"); 
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}

$fileExistence = test-path ($FilePath + "*")
if ($fileExistence -eq $false)
{ 
exit
}
else
{
#continue
}

$OldestFile = Get-ChildItem $FilePath | Sort LastWriteTime | Select -first 1
$StartDate=$OldestFile.LastWriteTime
$EndDate=get-date

$TimeDiff = NEW-TIMESPAN –Start $StartDate –End $EndDate -erroraction 'silentlycontinue'
$Minutes = $TimeDiff.totalminutes
$MinutesTrunc = [MATH]::Truncate($Minutes)

if ($Minutes -ge $age)
{
send-email
start-sleep -s 10
}
else
{
exit
}

更改自

-ExecutionPolicy绕过'C:\\ MyPath \\ File.ps1'

-ExecutionPolicy绕过&'C:\\ MyPath \\ File.ps1'(请注意&)由于某种原因而起作用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM