Así que tengo un problema.
Estoy tratando de escribir una secuencia de comandos que haga ping a una lista de nombres de host en un archivo .txt externo, y enviar una alerta por correo electrónico si uno de ellos falla. Tengo algunos problemas con esto, pero el principal en este momento es que no puedo encontrar una manera de insertar una variable en la línea de asunto o el cuerpo del mensaje. El código que estoy usando para enviar una alerta por correo electrónico ahora se ve así:
send-mailmessage -to "$alertRecipient" -from "$alertSender" -subject "$alertSubject" -body "$alertBody" -smtpServer "$smtpServer"
Ahora, he usado muchos valores de variables en ese comando, y todos funcionan hasta cierto punto. Estoy mirando principalmente $alertSubject
y $alertBody
. Los valores de ambas de esas variables se extraen de otro archivo .txt y son iguales a "$ selHost is offline!".
$selHost
es la variable que uso en el script para ser igual al nombre de host en el que está trabajando el script en un momento dado. Si lo hago write-host $selHost
prácticamente en cualquier parte del script, obtendré algo como "SomeComputerName" o "192.168.1.123" y su valor cambia cada vez que el script cambia al siguiente host.
Quiero el valor literal de $selHost
para estar en el cuerpo del mensaje de la alerta cuando se envía, pero tal como lo escribí, cuando se envía la alerta, simplemente dice "¡$ selHost está desconectado!", lo que me da un nivel completamente inútil de información sobre la naturaleza de El problema potencial.
Pastebin enlace de mi script como está ahora.
Send-Mail-Message
comando en la línea 30, $selHost
definido en la línea 23, $alertSubject
definido en la línea 10, $alertBody
Definido en la línea 12.
TL; DR: Quiero incrustar el valor de una variable en los argumentos de la Send-MailMessage
comando, pero en lugar de eso solo obtengo el nombre de la variable y no sé qué hacer.
fuente