You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从任务计划程序运行PowerShell脚本时身份验证错误的注意事项

问题描述

以下PowerShell脚本用于从Windows凭据管理器获取凭据,通过SMTP服务器发送邮件:

$pass = Get-StoredCredential -Target 'domain.in'
Send-MailMessage -UseSsl -Credential $pass -From 'sender mail' -To 'receiver mail' -Subject 'test1' -Body 'tst' -Attachments 'C:\Users\V-Connect-Akash\Downloads\test.txt' -SmtpServer 'smtp.office365.com'

注:原脚本中-From参数的引号存在语法错误,已修正。

手动运行该脚本可正常发送邮件,但通过任务计划程序运行时,出现错误:Authentication failed because the remote party has closed the transport stream。

请问通过任务计划程序运行该脚本前,需要注意哪些事项?


关键注意事项
  • 账户一致性:
    任务计划使用的运行账户必须和你手动执行脚本的账户一致,因为Get-StoredCredential读取的是当前用户凭据管理器中的条目,不同账户无法跨用户读取存储的凭据。如果必须用其他账户运行,需要在该账户登录状态下,手动将domain.in对应的凭据添加到凭据管理器。
  • 强制指定TLS版本:
    Office 365 SMTP服务器要求使用TLS 1.2及以上版本,任务计划启动的PowerShell环境可能默认启用的TLS版本较低。需在脚本开头添加命令强制启用TLS 1.2:
    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    
  • 文件与路径权限:
    确保任务计划的运行账户对脚本文件、附件文件(C:\Users\V-Connect-Akash\Downloads\test.txt)有读取权限。如果使用系统账户运行,普通用户的下载文件夹会被限制访问,建议将附件移至公共目录(如C:\Public\),或调整文件夹权限。
  • 任务计划执行配置:
    • 在任务计划的“操作”中,程序/脚本指定为powershell.exe,添加参数-ExecutionPolicy Bypass -File "你的脚本完整路径.ps1",避免执行策略阻止脚本运行。
    • 若勾选“不管用户是否登录都要运行”,需确认账户密码输入正确;无需高权限时,不要勾选“以最高权限运行”,避免权限上下文异常。
  • SMTP端口补充:
    Office 365 SMTP的默认端口为587,原脚本未指定端口可能导致连接异常,建议在Send-MailMessage中添加-Port 587参数。

内容的提问来源于stack exchange,提问作者user16753150

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:00:01