需求:编写PowerShell整合脚本,运行PhantomJS截图并执行邮件脚本
整合PhantomJS截图与邮件发送的PowerShell脚本方案
没问题,我帮你整理了一个整合后的PowerShell脚本,完全符合你的需求,还加入了基础的错误检查,方便排查执行过程中可能出现的问题:
# 定义各个关键路径,方便后续维护修改 $phantomJsExe = "C:\phantomjs-2.1.1-windows\phantomjs-2.1.1-windows\bin\phantomjs.exe" $screenshotScript1 = "I:\my_code\capture_screenshot1.js" $screenshotScript2 = "I:\my_code\capture_screenshot2.js" $sendMailScript = "I:\my_code\send_mail.ps1" # 执行第一个截图任务 Write-Host "正在运行第一个PhantomJS截图脚本..." & $phantomJsExe $screenshotScript1 if ($LASTEXITCODE -ne 0) { Write-Warning "⚠️ 第一个截图脚本执行失败,退出代码:$LASTEXITCODE" # 如果需要在截图失败时终止整个脚本,取消下面这行注释 # exit 1 } # 执行第二个截图任务 Write-Host "正在运行第二个PhantomJS截图脚本..." & $phantomJsExe $screenshotScript2 if ($LASTEXITCODE -ne 0) { Write-Warning "⚠️ 第二个截图脚本执行失败,退出代码:$LASTEXITCODE" # 按需决定是否终止脚本 } # 切换到邮件脚本所在目录(避免脚本中相对路径出错),执行发送邮件任务 Write-Host "正在运行邮件发送脚本..." Set-Location (Split-Path $sendMailScript -Parent) & $sendMailScript if ($LASTEXITCODE -ne 0) { Write-Warning "⚠️ 邮件发送脚本执行失败,退出代码:$LASTEXITCODE" } Write-Host "✅ 所有任务执行完成!"
代码说明:
- 把所有路径定义为变量,后续如果文件位置变动,只需要修改变量值即可,不用逐个修改命令
- 使用
&调用外部程序(PhantomJS和PowerShell脚本),这是PowerShell中执行外部命令的标准方式 - 检查
$LASTEXITCODE判断每个任务是否执行成功,失败时输出警告信息,你可以根据需求决定是否终止整个脚本(比如截图失败就不发邮件,取消对应位置的exit 1注释即可) - 用
Set-Location切换到邮件脚本的目录,确保send_mail.ps1中如果用到相对路径能正常工作
Windows任务计划配置提示:
- 打开任务计划程序,点击「创建基本任务」
- 触发器设置为「每天」,时间选18:00
- 操作选择「启动程序」,在「程序/脚本」中输入
powershell.exe,「添加参数」中填写:
(-ExecutionPolicy Bypass -File "D:\你保存整合脚本的路径\integrated_script.ps1"-ExecutionPolicy Bypass是为了绕过PowerShell的脚本执行限制,确保任务能正常运行) - 勾选「不管用户是否登录都要运行」(如果需要在后台执行),并确保任务运行的用户账户有足够权限访问所有文件路径(PhantomJS、脚本、图片目录)
- 可以在「设置」选项卡中配置任务失败时的重试策略,或者启用「如果任务失败,发送电子邮件通知」(需要配置邮件服务器)
内容的提问来源于stack exchange,提问作者Harish P C
相关产品推荐
相关产品推荐

