我有一個我試圖發送電子郵件的PowerShell腳本。問題是我希望能夠調用腳本並傳入一些參數,包括smtp服務器,電子郵件地址,用戶名和密碼。問題在於powershell腳本不喜歡在命令行上輸入密碼。我必須對密碼進行硬編碼。有沒有辦法解決?還有一點信息是,有時候這是有效的。問題是,當我從這個腳本中打開數據庫時,就是密碼阻塞的時候。但是我根本不使用數據庫中的密碼。任何人都可以對此有所瞭解嗎?在命令行上輸入密碼的Powershell腳本
$smtpServer = $args[0]
$EmailTo = $args[1]
$UserName = $args[2]
$Password = $args[3]
$Subject = "Some Subject"
$EmailFrom = "[email protected]"
$Body = "Bunch of data here"
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587)
$SMTPClient.EnableSsl = $true
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("MyUserName", "MyPassword")
#$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("MyUserName", "MyPassword") --this won't work
$SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body)
「你不喜歡」是什麼意思?你的腳本崩潰了嗎?如果是這樣,那麼錯誤是什麼?它是否默默地失敗?還有別的嗎? –
是的,有一個錯誤,但我沒有看到這個錯誤,如果我硬編碼的密碼。使用「4」參數調用「發送」的異常:「郵箱不可用。服務器響應爲:5.1.0需要驗證」 At。\ SendEmail.ps1:50 char:8 + $ SMTPClient.Send <<< <($ EmailFrom,$ EmailTo,$主題,$正文) + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:DotNetMethodException - – BriceTRockindale
什麼版本的PowerShell您使用的?如果您至少有V2,則Send-MailMessage cmdlet應該能夠替換該函數。這會給你傳遞參數的命名參數,這可能比參數列表更好。 – mjolinor