2015-11-05 49 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是的,美化無法很好地識別PowerShell轉義序列;) –

相關問題