Send en e-post med vedlegg ved hjelp av PowerShell

Å sende en e-post med PowerShell kan være en fin måte å levere data under riktige omstendigheter. Det krever litt mer arbeid i forhold til å eksportere en fil, men prosessen kan være enkel med riktig referanse.

Fra konsollen

Ofte vil PowerShell gi deg de resultatene du trenger i konsollvinduet, eller du kan spesifisere en utdatafil eller et sted med innholdsinnhold for å lagre resultatene av et skript. Selv om dette ofte er tilstrekkelig, kan det å sende en e-post med PowerShell-skriptet være en flott måte å levere data på.

Det er noen få egenskaper og variabler du vil definere - den første er IP-adressen eller vertsnavnet til serveren du vil e-posten videresendes gjennom. Hvis du for eksempel velger å kjøre skriptet fra e-postserveren, kan du bruke localhost-adressen.

 $ smtpServer = "127.0.0.1" 

Vi vil også referere til filen vi ønsker å legge ved - denne kan ha blitt opprettet tidligere i skriptet, det kan være et statisk filnavn som erstattes regelmessig, eller det kan være dynamisk ut fra dine behov.

 $ file = "C: \ folder \ file.csv" $ att = new-object Net.Mail.Attachment ($ fil) 

Deretter importerer vi de nødvendige .NET-objektene.

 $ msg = new-object Net.Mail.MailMessage $ smtp = new-object Net.Mail.SmtpClient ($ smtpServer) 

Nå fyller vi ut de andre egenskapene til e-posten. "Fra" -adressen kan være spesielt viktig basert på organisasjonens retningslinjer for e-postfiltrering og spam. Du kan bruke variabler for å fylle ut hvilken som helst av verdiene nedenfor.

 $ msg.From = " postbeskyttet " 

Du kan legge til så mange av de følgende linjene som du vil legge til flere mottakere i e-posten.

 $ msg.To.Add (" postbeskyttet ") $ msg.To.Add (" postbeskyttet ") 

Angi emnet for e-posten med denne linjen.

 $ msg.Subject = "Varsling fra e-postserver" 

Bruk @ "for å åpne og" @ for å lukke en flerstrengsstreng. Det er sannsynlig at e-postadressen vil være flere linjer, men hvis den ikke er det, kan du bruke vanlige doble anførselstegn.

 $ msg.Body = @ "Dette er et eksempel 

beskjed

kropp"@

Legg ved filen definert ovenfor.

 $ Msg.Attachments.Add ($ att) 

Følgende to linjer vil sende meldingen og deretter fjerne vedlegget fra minnet. Unnlatelse av å kaste vedlegget vil føre til unødvendig bruk av systemets minne, noe som til slutt kan påvirke systemytelsen.

 $ smtp.Send ($ msg) $ att.Dispose () 

Eksempel

Her er et eksempel på bruk av denne funksjonaliteten i et skript for en Exchange 2007/2010 Server. Formålet med dette skriptet er å lage en .csv-rapport med postboksstatistikk og e-post den til administratorer. Hvis du planlegger å bruke skriptet nedenfor, må du forsikre deg om at du erstatter eksempelverdiene som følger med din egen legitime informasjon.

 Add-PSSnapin Microsoft.Exchange.Management.Powershell.Admin -Arroraction stille Fortsett 

$ file = "C: \ folder \ file.csv"

$ mailboxdata = (Get-MailboxStatistics | velg DisplayName, TotalItemSize, TotalDeletedItemSize, ItemCount, LastLoggedOnUserAccount, LastLogonTime)

$ postboksdata | eksport-csv "$ fil"

$ smtpServer = "127.0.0.1"

$ att = new-object Net.Mail.Attachment ($ fil)

$ msg = new-object Net.Mail.MailMessage

$ smtp = new-object Net.Mail.SmtpClient ($ smtpServer)

$ msg.From = " postbeskyttet "

$ msg.To.Add (" postbeskyttet ")

$ msg.To.Add (" postbeskyttet ")

$ msg.Subject = "Varsling fra e-postserver"

$ msg.Body = "Vedlagt er e-postserverens postboksrapport"

$ Msg.Attachments.Add ($ att)

$ Smtp.Send ($ msg)

$ Att.Dispose ()

© Copyright 2021 | pepebotifarra.com