修复PowerShell中的System.Object []

时间:2017-05-30 17:31:40

标签: arrays powershell-v3.0 cmdlets

我有一个脚本会ping一个脱机工作站列表,然后如果工作站离线,请查询SCCM以获取描述。然后它接受工作站ID和描述,并将其放在电子邮件正文中并将其发送到特定地址。

只要我只输出变量,脚本在PowerShell中运行良好。如果我使用class player(): def player_name(): Minput= input("Insert name of mp3: ") os.startfile("MP3_folder\\" +Minput + ".mp3") input("Input a key to end playback: ") os.system("TASKKILL /F /IM wmplayer.exe") cmdlet,则电子邮件正文中显示的唯一内容是Send-MailMessage

我该如何解决这个问题?我已经阅读了System.Object[]属性,但我不太确定将其添加到我的脚本中。

-join

1 个答案:

答案 0 :(得分:0)

如果构建一个(自定义)对象数组并将带有该数组的变量放入字符串中,PowerShell会将其扩展为对象数组的字符串表示形式,即System.Object[]

您真正想要的是工作站ID和说明的HTML表格(因为您仍然以HTML格式发送邮件。

$offlinelist = foreach ($workstation in $list) {
    ...
    if ($test -match "false") {
        New-Object -Type PSObject -Property ([ordered]@{
            ID          = $workstation
            Description = $description
        })
    }
}

$body = $offlinelist |
        ConvertTo-Html -Fragment -PreContent '<p>These workstations are offline:</p>' |
        Out-String
Send-MailMessage ... -Body $body -BodyAsHtml