PowerShell Cmdlet删除空白
-
22-12-2019 - |
题
我为PowerShell创建了一个小cmdlet,以便能够使用Exchange服务发送电子邮件。当我通过PowerShell中的消息似乎剥离字符串的所有空格时。
这是cmdlet代码:
[Cmdlet(VerbsCommunications.Send, "ExchangeEmail")]
public class SendExchageEmailCommand : Cmdlet
{
[Parameter(Mandatory=true)]
public string ServerUri { get; set; }
[Parameter(Mandatory=true)]
public string Subject { get; set; }
[ValidatePattern("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$")]
[Parameter(Mandatory = true)]
public string To { get; set; }
[ValidatePattern("^([0-9a-zA-Z]+[-._+&])*[0-9a-zA-Z]+@([-0-9a-zA-Z]+[.])+[a-zA-Z]{2,6}$")]
[Parameter]
public string From { get; set; }
[Parameter]
public string Body { get; set; }
protected override void ProcessRecord()
{
var service = new ExchangeService(ExchangeVersion.Exchange2007_SP1) {Url = new Uri(ServerUri)};
var mail = new EmailMessage(service) {Subject = Subject};
if (!string.IsNullOrEmpty(From))
{
mail.From = From;
}
if (!string.IsNullOrEmpty(Body))
{
mail.Body = Body;
}
mail.ToRecipients.Add(To);
mail.Send();
}
}
.
和powershell代码看起来像:
$subject = "Testing Reports"
$body = ""
$files = Get-ChildItem $ReportsFolder
foreach ($file in $files)
{
$body += "`r`n"
$body += $file.FullName
}
Send-ExchangeEmail -ServerUri $SMTPServerURI -Subject $subject -To $MessageTo -Body $body
.
是否有任何方法可以确保空格被传递到cmdlet(我甚至是正确的,它是ps剥离空格?)
解决方案
我不认为powershell正在删除空格。我发现你更有可能发送电子邮件正文,好像它是HTML,而不是纯文本。我不知道类邮政声明是什么(因为我不知道命名空间或任何东西),但在mailmessage类中,有一个标志for iSodyhtml,你可以设置。
不隶属于 StackOverflow