我想用函式Send-MailMessage通過Powershell發送一封電子郵件。
我的smtp服務器需要用戶名和密碼。
我把它作為引數傳遞,但是得到一個錯誤。
$CredUser = "123UserPass"/span>
$CredPassword = "1234/5678/999"
$Credential = New-Object -TypeName System. Management.Automation.PSCredential -ArgumentList $CredUser, $CredPassword。
Send-MailMessage -SmtpServer "smtp.amazonaws. com" -Port 587 -Credential $Credential -UseSsl -From '[email protected]' -To '[email protected]' -Subject 'TEST'
錯誤資訊:
New-Object : 找不到 "PSCredential "的多載和引數數。"2".
在第3行char:16
... redential = New-Object -TypeName System.Management.Automation.PSCrede ...
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
CategoryInfo : InvalidOperation: (:) [New-Object], MethodException
FullyQualifiedErrorId : ConstructorInvokedThrowException,Microsoft.PowerShell.Commands.NewObjectCommand
Send-MailMessage : 無法處理引數'Credential'上的引數轉換。 userName
在第4行char:90
... tp.us-east-2.amazonaws.com" -Port 587 -Credential $Credential -UseSsl ...
~~~~~~~~~~~
CategoryInfo : InvalidData: (:) [Send-MailMessage], ParameterBindingArgumentTransformationException
FullyQualifiedErrorId : ParameterArgumentTransformationError,Microsoft.PowerShell.Commands.SendMailMessage
我試圖使用ConvertTo-SecureString -String "mypassword",但也得到一個轉換錯誤。
uj5u.com熱心網友回復:
嘗試:
$credpassword = ConvertTo-SecureString -AsPlainText "mypassword"/span> -Force
如果你使用的是5.1或更高版本,你也可以使用::new()靜態方法來代替New-Object(完全可選)。
$credpassword = ConvertTo-SecureString -AsPlainText "mypassword"/span> -Force
[System.Management.Automation.PSCredential]::new( $CredUser, $CredPassword )
Send-MailMessage -SmtpServer "smtp.amazonaws. com" -Port 587 -Credential $Credential -UseSsl -From '[email protected]' -To '[email protected]' -Subject 'TEST'
如果你想增加一些可讀性,你可以加入拼寫:
$credpassword = ConvertTo-SecureString -AsPlainText "mypassword" -Force
[System.Management.Automation.PSCredential]::new( $CredUser, $CredPassword )
$SMTPParams = @{
SmtpServer = 'smtp.amazonaws.com'/span>
埠 = 587[/span
憑證 = $Credential
UseSsl =$true
From = '[email protected]'/span>
收件人 = '[email protected]'
主題 = 'TEST'/span>
}
Send-MailMessage @SMTPParams
注意:有些人可能對密碼的可見性不以為然。 你可以將密碼安全地存盤在一個檔案中,然后再呼叫它來使用。 只要它是由同一臺機器上的同一個用戶使用。
$SecurePassword = Read-Host -Prompt "Enter Password" -AsSecureString $SecurePassword | ConvertFrom-SecureString | Out-File C: empSecurePasswword.txt
$CredPassword = Get-Content C: empSecurePasswword.txt | ConvertTo-SecureString
[System.Management.Automation.PSCredential]::new( $CredUser, $CredPassword )
顯然,你要改變檔案的路徑,以便不宣傳它。 用前2行建立密碼檔案。
檔案 這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/309319.html
標籤:
