1
我試圖創建一個默認值模塊,看起來是這樣的:PowerShell的麻煩模塊創建
function Send-Mail ($EmailTo = "[email protected]" , $Body = "Warning! Technical Maintance today", $Subject = "*** Warning! ***")
{
$EmailFrom = "[email protected]"
$SMTPServer = "mail.example.com"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("it", "Hjcnthv1");
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
}
Export-ModuleMember -Function 'Send-Mail'
然後我試圖使用它:
Import-Module '\\dc01\scripts$\_server\Send-Mail.psm1'
Send-Mail [email protected] "Text" "Subject"
但我收到錯誤:
Exception calling "Send" with "4" argument(s): "Failure sending mail."
At \\dc01\scripts$\_server\Send-Mail.psm1:14 char:1
+ $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : SmtpException
我在做什麼錯?
我不知道發送呼叫中的括號是否是問題。我知道你不應該讓它們用於PowerShell函數調用,因爲它們將所有參數轉換爲一個對象,如果將它們放在括號中,並因此作爲單個參數傳入。我只是不確定這是否與.NET對象的方法調用一樣。 – n3wjack
所以基本上,我說的是試試這個:'$ SMTPClient.Send $ EmailFrom,$ EmailTo,$ Subject,$ Body' – n3wjack
括號不是問題。方法調用需要一個基於數組的參數列表。 –