Powershell 变量输出为多行文本

问题描述 投票:0回答:1

我想知道是否有人可以帮助我。

我使用帮助台票证系统,向特定电子邮件地址发送电子邮件,创建工作/票证。我试图通过创建一个脚本来简化这一点,在该脚本中我可以将电子邮件正文的主题和文本输入到脚本中的变量中,并将所有这些作为自动电子邮件发送。

使用的脚本似乎工作正常,但是当电子邮件到达我的收件箱时,复制到电子邮件正文变量中的多行文本全部作为复制到电子邮件正文上的所有数据的一行字符串出现,而不是它与复制时的格式相同,有多行。

我想不出任何方法可以使此输出与复制的输出相同,并且无法通过谷歌找到解决方案。

当前脚本如下:

Clear-Host
$HD_Email_Credential = Get-Credential

#Gather information to send in email Body
$Subject = Read-Host 'Please Enter the email subject here '
Write-Host = 'Please copy (Ctrl+C) in the Email Body and press Enter'
Pause
$EmailBody = Get-Clipboard -TextFormatType Text

#Define Email Parameters
$FromAddress = '[email protected]'
$ToAddress = '[email protected]'

$EmailParams = @{
    From       = $FromAddress
    To         = $ToAddress
    Subject    = "$Subject"
    Body       = "$EmailBody"
    SmtpServer = 'smtp.office365.com'
    Port       = 587
    UseSsl     = $true
    Credential = $HD_Email_Credential
}

#Send Email
Send-MailMessage @EmailParams
Write-Host "Email successfully sent to $ToAddress from $FromAddress" -ForegroundColor Green

我尝试将 (Ctrl + V) 信息粘贴到 $EmailBody 的读取主机选项中,但它会使粘贴多行文本的脚本崩溃。

#Gather information to send in email Body

$Subject = Read-Host "Please Enter the email subject here "
$EmailBody = Read-Host "Please enter in the Email Body "

当在 Windows powershell IDE 中执行脚本时,它接受多行文本!但不是我需要的“使用 powershell 运行 .PS1 脚本”。

目前使用 Get-Clipboard 作为潜在的解决方案,到目前为止,已经很接近了。

尝试了这里的字符串-

@"

$EmailBody

"@

但是变量不输出和数据,即使使用双引号“

我希望这已经得到解释了。如果有人可以提供帮助,我们将不胜感激!谢谢:)

powershell variables
1个回答
0
投票

通过放置“| Out-String”修复了这个问题

$EmailBody = Get-Clipboard -TextFormatType 文本 |外弦

© www.soinside.com 2019 - 2024. All rights reserved.