2015-11-05 4 views
0

Я продолжаю получать ошибку, когда пытаюсь внедрить несколько тел электронной почты. Я подозреваю плохой синтаксис. Невозможно найти какой-либо пример в Интернете. Какие-либо предложения?Создание многострочного тела электронной почты в powershell

Ошибка: Unexpected token 'EmployeeName"] to $AccountExpire"' in expression or statement.

$subject = "Email for $item["EmployeeName"]. Date expire $AccountExpire" 
[email protected]"        
Name: $item["Employee"] 
Class: Contractor 
Depart: $item["Depart"] 
Region: $item["Region"] 
Manager: $item["Manager"] 
New Date: $NewDate       
"@      
SendUpdateEmail($subject,$Body) 
+0

Что ошибка вы получаете. Где определяется '$ item'? Думаю, исходя из файла csv и цикла? Эти переменные могут не расширяться в строке здесь должным образом. – Matt

+0

Попробуйте использовать одиночные кавычки для имени поля вместо двойных кавычек, например '['EmployeeName']'. –

ответ

4

Вы должны избежать этих операций индекса массива с подвыражения ($()):

$subject = "Email for $($item["EmployeeName"]). Date expire $AccountExpire" 

То же самое для строк многострочного (или здесь-стринг как они официально называются):

[email protected]"        
Name: $($item["Employee"]) 
Class: Contractor 
# and so on...     
"@ 

Лично я бы для шаблона многострочного и использовать оператор формата -f для заполнения значений:

[email protected]' 
Name: {0} 
Class: Contractor 
Depart: {1} 
Region: {2} 
Manager: {3} 
New Date: {4} 
'@ 
$body = $bodyTemplate -f $item["Employee"],$item["Depart"],$item["Region"],$item["Manager"],$NewDate 

При использовании -f, вы можете также форматировать различные типы данных, так если $NewDate является [DateTime] объект, вы можете контролировать форматирование, что внутри шаблона, например .:

@' 
Date: {0:HH:mm:ss} 
'@ -f (Get-Date) 

, который будет производить:

Date: 14:55:09 

(если вы это сделали пять до 3 во второй половине дня)

+0

прохладный. я попробую оба. Спасибо Mathias –

+0

@ MathiasR.Jessen .... извините ... это было глупо. Это был синтаксис, зачеркивающий меня. – Matt

+0

@Matt Да, prettify не очень хорошо распознает escape-последовательности PowerShell;) –