2017-04-04 1 views
0

Ich versuche zu testen, eine E-Mail senden, aber ich möchte nicht nur ein Klartext-Passwort in meinem Skript haben.Senden von E-Mails über Powershell mit sicherem Passwort

Hier ist, was ich habe, und das funktioniert:

$SmtpServer = 'smtp.office365.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = 'Hunter2' 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -UseSsl -Credential $Credentials 

Dies funktioniert.

Ich folgte dem Rat von this stackoverflow thread, wie ich dieses Skript ohne Aufforderung zur Eingabe von Anmeldeinformationen (oder Eingabe von ihnen Klartext) möchten, so dass ich es als eine geplante Aufgabe ausführen kann.

Ich habe ein sicheres Passwort, das ich durch Laufen erstellt haben:

read-host -assecurestring | convertfrom-securestring | out-file C:\Users\FubsyGamr\Documents\mysecurestring_fubsygamr.txt 

Aber wenn ich meinen $ SMTPPASSWORD Eintrag mit dem vorgeschlagenen Eintrag ersetzen:

$SmtpServer = 'smtp.office365.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = cat C:\Users\FubsyGamr\Documents\mysecurestring_fubsygamr.txt | convertto-securestring 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $($smtpPassword | ConvertTo-SecureString -AsPlainText -Force) 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -UseSsl -Credential $Credentials 

Dann wird die E-Mail nicht senden nicht mehr. Ich erhalte den folgenden Fehler:

Send-MailMessage : The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM

Irgendwelche Tipps? Ich möchte dieses E-Mail-Skript als geplante Aufgabe ausführen, aber ich möchte nicht, dass mein Kennwort im Klartext gespeichert wird.

Antwort

1

Mitarbeiter half mir zu realisieren, $Credentials Objekt versuchte, mein Kennwort zurück in den Klartext zu konvertieren. Ich habe den Modifikator ConvertTo-SecureSTring -AsPlainText -Force entfernt und die E-Mail erfolgreich gesendet!

Die Funktionsweise Skript:

$SmtpServer = 'smtp.office365.com' 
$SmtpUser = '[email protected]' 
$smtpPassword = cat C:\Users\FubsyGamr\Documents\mysecurestring_fubsygamr.txt | convertto-securestring 
$MailtTo = '[email protected]' 
$MailFrom = '[email protected]' 
$MailSubject = "Test using $SmtpServer" 
$Credentials = New-Object System.Management.Automation.PSCredential -ArgumentList $SmtpUser, $smtpPassword 
Send-MailMessage -To "$MailtTo" -from "$MailFrom" -Subject $MailSubject -SmtpServer $SmtpServer -UseSsl -Credential $Credentials 
Verwandte Themen