问题描述
我可以在盒子上从命令行运行以下示例脚本,但在尝试从 controlm 运行相同脚本时遇到问题。
# mailtest.ps1
$cmd='Send-MailMessage -Body "body" -To "to@abc.com" -From "from@abc.com" -Subject "subject" -SmtpServer "smtpserver.net" -Port 25
Invoke-Expression $cmd
命令行 - 工作正常:
powershell -Nologo -NonInteractive -File mailtest.ps1
ControlM - 错误:
powershell -Nologo -NonInteractive -File mailtest.ps1
Send-MailMessage : Unable to read date from the transport connection: net_io_connectionclosed
...
+ FullyQualifiedErrorId : SmtpException,Microsoft.Powershell.Commands.SendMailMessage
网络在防火墙后面,但我认为这不是问题,因为邮件是从命令行发送的,没有任何问题。
到目前为止我尝试过的:
- 已为 TLS 1.0、1.1、1.2 和 SSL 2.0、3.0 启用客户端/服务器
- 尝试了端口号 - 25、587 和 465 - 它们都无法在 controlM 中工作
- 也尝试使用 -noprofile 和 Bypass 参数进行调用
解决方法
这似乎不是 Control-M 问题(尽管由于 Windows 的限制性,通过 Control-M 运行 PowerShell 脚本可能会出现问题)。
Control-M 脚本是否在您运行手动命令行所在的同一代理上启动?
作为测试,我建议检查 SMTP 服务器属性并将 IP 地址设置为“所有未签名”,看看是否可以解决问题。
回到 Control-M 端,推荐的启动 PowerShell 脚本的方法是有一个指向 ps1 的 cmd 文件 -
powershell -command "& {