Powershell cmdlet删除空格

时间:2014-01-10 17:07:15

标签: c# powershell powershell-v2.0 cmdlets

我为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剥离空格?)

1 个答案:

答案 0 :(得分:1)

我认为PowerShell不会删除空格。我发现你发送电子邮件正文更像是HTML,而不是纯文本。我不知道EmailMessage是什么类(因为我不知道命名空间或任何东西),但在MailMessage类中有一个IsBodyHtml的标志,你可以设置它。