Contents

Enviar correo desde PowerShell

Una de las formas más sencillas para generar herramientas de reporting con PowerShell es utilizando la funcionalidad integrada de enviar correo desde PowerShell junto con la ejecución programada de scripts de PowerShell. Lo único que necesitaremos para hacerlo será un servidor de correo desde el que realizar el envío (obvio) y un terminal de PowerShell.

/wp-content/uploads/2019/03/Enviar-correo-desde-PowerShell1.png
Enviar correo desde PowerShell

Utilizando Send-MailMessage para enviar correo desde PowerShell

Send-MailMessage va a ser el Cmdlet que utilizaremos para enviar correo desde nuestros scripts de PowerShell. Veamos un ejemplo de la sintaxis básica de este Cmdlet:

1
Send-MailMessage -From 'mail@origen.com' -To 'mail@destino.com' -Subject 'Asunto del correo' -Body 'Cuerpo del correo' -SmtpServer 'IP_SMTP_SERVER' -Port 'Puerto_SMTP_Server'

Vamos a repasar los distintos parámetros pese a que son muy autoexplicativos:

  • From: Dirección de correo de origen.
  • To: Dirección de correo de destino.
  • Subject: Asunto del correo.
  • Body: Cuerpo del correo. Si vamos a enviar un correo largo para obtener una lectura más sencilla del código recomiendo generar un string antes del envío, almacenarlo en una variable y pasarlo a este parámetro.
  • SmtpServer: Servidor SMTP al que nos conectaremos para realizar el envío del correo.
  • Port: Puerto del servidor SMTP al que nos conectaremos.

Con esto ya podríamos enviar correo desde PowerShell siempre y cuando el servidor SMTP nos autorice a hacerlo. De no ser así, si éste requiere de autenticación (lo habitual), nos valdremos del parámetro -Credential, que nos permitirá pasar al cmdlet un objeto PSCredential con las credenciales con las que nos validaremos al servidor.

1
2
$credencial = Get-Credential
Send-MailMessage -From 'mail@origen.com' -To 'mail@destino.com' -Subject 'Asunto del correo' -Body 'Cuerpo del correo' -SmtpServer 'IP_SMTP_SERVER' -Port 'Puerto_SMTP_Server' -Credential $credencial 

Conclusión

Utilizando lo visto en esta entrada junto con la ejecución programada de scripts de PowerShell podremos crear con muy pocas líneas herramientas que ejecuten tareas automatizadas y reporten el resultado de las mismas directamente a nuestro buzón de correo o pequeñas herramientas de recolección de datos con las que mantenernos al día del estado de nuestras infraestructuras o aplicaciones.