我创建了一个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
}
答案 0 :(得分:0)
从
更改参数-ExecutionPolicy绕过'C:\ MyPath \ File.ps1'
到
-ExecutionPolicy Bypass&'C:\ MyPath \ File.ps1'(注意&)由于某种原因起作用。