首页 > 解决方案 > Powershell 脚本帮助(通过 SMTP 获取处理和发送输出)

问题描述

我正在尝试制作 ePowershell脚本来检查特定服务(名称)Status以及StartType服务器的时间和日期以及服务器名称等附加信息。

.txt 中的服务器列表只是 FQDN。

我在 powershell 中有所需的输出,但无法通过 SMTP 正确发送。在一种情况下,它不显示状态或仅显示服务器的名称,并且所有信息都是纯文本,不在不同服务器的容器中。

所需输出:powershell 中所需的输出需要传输到 smtp 电子邮件

$ServerList = Get-Content -Path "C:\new_folder\servers.txt"
Foreach ($server in $ServerList){
$time = "---"
$time = ([WMI]'').ConvertToDateTime((gwmi win32_operatingsystem -computername $server).LocalDateTime)
$server + ', ' + $time
Get-Service -ComputerName "$server" | where-object {$_.name -like '*goge*'} | Select @{Name="server";Expression={$server}},Name,DisplayName,StartType,Status
}send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $body -BodyAsHtml -Priority high

标签: windowspowershellservicescriptingsmtp

解决方案


尝试使用这个小修复,我留下评论

    $ServerList = Get-Content -Path "C:\new_folder\servers.txt"
    $array=@() #array which will contain result get-service
    Foreach ($server in $ServerList){
    $time = "---"
    $time = ([WMI]'').ConvertToDateTime((gwmi win32_operatingsystem -computername $server).LocalDateTime)
    $server + ', ' + $time
    #add to our array result of each get-service from servers
    $array+=Get-Service -ComputerName "$server" | where-object {$_.name -like '*goge*'} | Select @{Name="server";Expression={$server}},Name,DisplayName,StartType,Status
    }
    send-MailMessage -SmtpServer $smtp -To $to -From $from -Subject $subject -Body $array -BodyAsHtml -Priority high

推荐阅读