Cmdlet PowerShell Rimozione di spazi bianchi
-
22-12-2019 - |
Domanda
Ho creato un piccolo cmdlet in PowerShell per poter inviare una e-mail utilizzando i servizi di Exchange.Quando passo il corpo del messaggio a PowerShell sembra spogliare tutti gli spazi bianchi fuori dalla stringa.
Ecco il codice 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();
}
}
.
E il codice PowerShell sembra:
$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
.
C'è un modo per garantire che lo spazio bianco sia trasmesso in un cmdlet (e sono persino giusto che sia PS che spoglia lo spazio bianco?)
Soluzione
Non penso che PowerShell stia rimuovendo lo spazio bianco.Trovo più probabile che tu stia inviando il corpo e-mail come se fosse HTML, non semplice testo.Non so quale sia l'emailmessaggio di classe (dal momento che non conosco lo spazio dei nomi o nulla), ma nella classe MailMessage c'è una bandiera per ISBYHTML, che puoi impostare.