求助:修改PowerShell弹窗脚本实现答案邮件回传
实现PowerShell弹窗结果邮件回传的解决方案
你可以通过PowerShell的Send-MailMessage cmdlet将用户的弹窗选择结果发送邮件,以下是整合后的完整脚本:
# 加载弹窗所需程序集 Add-Type -AssemblyName PresentationCore,PresentationFramework # 弹窗配置 $msgBody = "This is a question type your answer" $msgTitle = "Confirm Reboot" $msgButton = 'YesNoCancel' $msgImage = 'Question' # 显示弹窗并获取用户选择结果 $Result = [System.Windows.MessageBox]::Show($msgBody,$msgTitle,$msgButton,$msgImage) Write-Host "The user chose: $Result [" ($result).value__ "]" # 邮件发送配置(请根据实际情况修改以下参数) $smtpServer = "smtp.example.com" # 你的SMTP服务器地址 $smtpPort = 587 # SMTP端口,通常587(TLS)或465(SSL) $fromAddress = "sender@example.com" # 发件人邮箱 $toAddress = "recipient@example.com" # 收件人邮箱 $mailSubject = "用户弹窗选择结果" $mailBody = @" 用户的弹窗选择结果如下: 选择内容:$Result 对应数值:$($result.value__) "@ # 发送邮件 Send-MailMessage -SmtpServer $smtpServer -Port $smtpPort -From $fromAddress -To $toAddress -Subject $mailSubject -Body $mailBody -UseSsl -Credential (Get-Credential)
关键说明:
- 必填参数修改:必须替换
$smtpServer、$fromAddress、$toAddress为你实际的邮件服务器和邮箱信息,端口根据服务器要求调整。 - 身份验证:
-UseSsl启用加密连接,Get-Credential会弹出窗口让你输入发件人邮箱的登录凭据;若需脚本自动运行,可提前将凭据加密存储后调用(不建议明文写入脚本)。 - 内容格式化:使用Here-String(
@")格式化邮件正文,让结果展示更清晰。
如果你的环境不支持Send-MailMessage,也可以用.NET的SmtpClient类实现,示例如下:
# .NET SmtpClient实现方式 $smtpClient = New-Object System.Net.Mail.SmtpClient($smtpServer, $smtpPort) $smtpClient.EnableSsl = $true $smtpClient.Credentials = Get-Credential $mailMessage = New-Object System.Net.Mail.MailMessage($fromAddress, $toAddress, $mailSubject, $mailBody) $smtpClient.Send($mailMessage)
内容的提问来源于stack exchange,提问作者user21486214
相关产品推荐
相关产品推荐

