Puncte:0

Powershell Send-MailMessage

drapel in

Am creat un script pentru serverele ping care rulează din Task Scheduler. Dacă un server nu face ping, ar trebui să-mi trimită un e-mail. De asemenea, trimite un e-mail o dată pe zi că este în viață.

Problema este că majoritatea e-mailurilor sunt trimise și ajung așa cum era de așteptat, dar ocazional un e-mail nu este trimis. Nu este generată nicio eroare. Pe baza analizei fluxului de corespondență, e-mailul nu pare să ajungă niciodată la serverul nostru Office365 Exchange.

Am citit diverse soluții, inclusiv inserarea cmdlet-urilor de somn și utilizarea unui bloc try/catch. Până acum am găsit doar postări cu probleme în care Send-MailMessage eșuează în mod constant, dar nicio postare cu o problemă în care eșuează neregulat.

Înregistrez rezultatele, dar în ceea ce privește încercarea/prinderea, Send-MailMessage reușește întotdeauna.Fișierele mele jurnal arată întotdeauna o trimitere reușită, niciodată un eșec.

Abilitățile mele PowerShell sunt încă în stadiul de începător, tot codul pentru decriptarea ID-ului de utilizator și a parolei a fost copiat de la alți oameni mai cunoscători.

Cod care citește acreditările, decriptează acreditările, construiește și trimite e-mail:

(emailOperator este un cont de utilizator hibrid Office365 cu o licență E1)

100% din timp, dacă rulez manual scriptul din PowerShell ISE, e-mailul este trimis. 100% din timp, dacă declanșez jobul manual din Task Scheduler, e-mailul este trimis (am făcut asta de zeci de ori, nu de sute).

$EmailRecipient = „Eu@Domeniul meu.org”
$emailFrom = '[email protected]'
$ReportingHost = 'Gazda de raportare: ' + $env:computername
$CredentialLocation = "c:\MyServer\SendEmailUsingOffice365CredentialFolder\"

#Citiți cheia AES
$AES_AdminDomain_KeyFilePath = $CredentialLocation + „AESKEY.txt” <# AES Admin Domain Encryption Key #>
$AESKey = Obține conținut $AES_AdminDomain_KeyFilePath

#Citiți și decriptați parola folosind AESKey
$ExportedPasswordFilePath = $CredentialLocation + „Password.txt” <# Parolă #> 
$pwdTxt = Obține conținut $ExportedPasswordFilePath
$securePwd = $pwdTxt | ConvertTo-SecureString -Key $AESKey

#Citiți și decriptați numele de utilizator folosind AESKey
$ExportedUserNameFilePath = $CredentialLocation + „User.txt” <# Nume de utilizator #>
$UserSecureString = ConvertTo-SecureString -key $AESKey -String (Obține conținut $ExportedUserNameFilePath)
$Pointer = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($UserSecureString)
$Sender = [Runtime.InteropServices.Marshal]::PtrToStringAuto($Pointer)

#generați acreditările
$EmailCredentials = Obiect nou System.Management.Automation.PSCredential -ArgumentList $Sender, $securePwd

#Construiți e-mailul
$EmailSubject = $env:ComputerName + " este activ și verifică punctele finale la " + (get-date -Format HH:mm)
$EmailBody = "- sfârșit - "

Start-Sleep -s 1
Încerca
    {
    Send-MailMessage -SmtpServer smtp.office365.com -Port 587 -UseSSL -From $EmailFrom -To $EmailRecipient -Subject $EmailSubject -Body $EmailBody -Credential $EmailCredentials
    }
    Captură
    {
    " eroare, sunt e-mail în viață NU a fost trimis, x" + $_.Exception.Message + "x " + $(Get-Date -format 'LL/zz/aaaa, HH:mm:ss') | Out-File -Filepath $Log_File -NoClobber -append 
    }
" e-mail, sunt în viață e-mail trimis, y" + $_.Exception.Message + "y " + $(Get-Date -format 'LL/zz/aaaa, HH:mm:ss') | Out-File -Filepath $Log_File -NoClobber -append

Există o metodă pentru a trimite e-mailul și pentru ca PowerShell să urmărească progresul acestuia?

mulțumesc

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.