【发布时间】:2017-05-30 17:31:39
【问题描述】:
我有一个脚本可以 ping 脱机工作站列表,然后如果工作站处于脱机状态,请查询 SCCM 以获取说明。然后它会同时获取工作站 ID 和描述,并将其放入电子邮件正文中,并将其发送到特定地址。
只要我只输出变量,脚本就可以在 PowerShell 中很好地工作。如果我使用 Send-MailMessage cmdlet,则电子邮件正文中唯一显示的是 System.Object[]。
我该如何解决这个问题?我已阅读有关 -join 属性的信息,但我不太确定将其添加到脚本的何处。
$list = Get-Content "C:\Users\$env:UserName\Desktop\workstations.txt"
foreach ($workstation in $list) {
$test = Test-Connection -BufferSize 32 -Count 1 -ComputerName $workstation -Quiet
$WQLquery = @"
select SMS_G_System_OPERATING_SYSTEM.Description from
SMS_R_System inner join SMS_G_System_SYSTEM on
SMS_G_System_SYSTEM.ResourceID = SMS_R_System.ResourceId inner join
SMS_G_System_OPERATING_SYSTEM on
SMS_G_System_OPERATING_SYSTEM.ResourceId = SMS_R_System.ResourceId where SMS_G_System_SYSTEM.Name = '$workstation'
"@
$description = Get-WmiObject -Query $WQLquery -ComputerName 'WORKSTATIONHERE' -Namespace 'root\sms\SITEHERE' |
Select-Object Description
if ($test -match "false") {
$offlinelist += ,@("$workstation", $description)
}
}
$offlinelist
Send-MailMessage -To "TOTHEUSER" -From "FROM" -Subject "Offline Workstations" -SmtpServer "SMTPHERE" -Body "<p>These workstations are offline: </p> $offlinelist" -BodyAsHtml
【问题讨论】:
标签: arrays powershell-3.0 cmdlets