SBS 2011上的Powershell时间表不会发送电子邮件

时间:2014-07-14 15:36:00

标签: windows powershell sendmail schedule

我创建了一个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
}

1 个答案:

答案 0 :(得分:0)

更改参数

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

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