我正在尝试构建一个 powershell 脚本,该脚本从多个系统收集系统正常运行时间信息,然后通过电子邮件发送。我想格式化电子邮件,以便以合理的方式对其进行结构化,然后添加有关系统的更多信息。
今天我有这个脚本,它收集有关系统列表的正常运行时间信息,然后将这些信息以数组的形式传递给 SendMail 函数,该函数将数组包含在电子邮件中。但是当前的输出是这样的。
正常运行时间列表:重新启动 02/19/2013 04:04:52 MyServer01 计算机正常运行时间:23 天 9 小时 重新启动 02/15/2013 04:17:40 MyServer02 计算机正常运行时间:27 天 9 小时
我希望输出或电子邮件文本更像:
系统 | 重启日期/时间 | 正常运行时间 MyServer01 02/17/2013 04:04:52 25 天 9 小时 MyServer02 02/17/2013 04:04:52 25 天 9 小时
如何格式化电子邮件中的文本,或者在将数组传递给电子邮件函数之前是否必须这样做。
脚本本身:
`
function SendMail([string]$arg1){
#SMTP server name
$smtpServer = "mysmtp"
#Creating a Mail object
$msg = new-object Net.Mail.MailMessage
#Creating SMTP server object
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
#Email structure
$msg.From = "my@overtherainbow.ddd"
$msg.ReplyTo = "noreply@overtherainbow.ddd"
$msg.To.Add("my@overtherainbow.ddd")
$msg.subject = "System uptime"
$msg.body = ("List og servers and uptime:" + $arg1 )
#Sending email
$smtp.Send($msg)}
function CheckUptime($listofservers){
$k =@()
foreach($s in $listofservers){
$Booted = Get-WmiObject -Class Win32_OperatingSystem -Computer $s
$Calc = [DateTime]::Now - $Booted.ConvertToDateTime($Booted.LastBootUpTime)
$k += " Restarted " +
$Booted.ConvertToDateTime($Booted.LastBootUpTime) +
" " + $s + " " +
" Computer Uptime: " +
$Calc.days + " " +
"days and", $Calc.hours + " hours"
}
return $k
}
#Defining list og servers
$listofservers = "MyServer01", "MyServer02"
#Calling function
$message = CheckUptime($serverlist)
SendMail($message)
`