How to Format a list to be emailed?

Welcome Forums General PowerShell Q&A How to Format a list to be emailed?

This topic contains 3 replies, has 3 voices, and was last updated by

4 years, 8 months ago.

  • Author
  • #16261

    Points: 0
    Rank: Member

    With a number of searches I've put together a script that will email me a list of empty directories on our SAN. The email works, and sends me a rather ugly list on one line:

    \\sann\rdb$\RDT00437 \\sann\rdb$\TEST0 \\sann\rdb$\TEST1

    When I try to pipe it to FORMAT-LIST I get garbage (times 3):


    How can I format the list to look like:



    $mailto2 = "
    $day_of_week = get-date -uformat "%A"
    $empty_dir = get-childitem \\sann\rdb$\ | Where-Object { $_.PSIsContainer } |
    Where-Object { $_.GetFiles().Count -eq 0 } |
    Where-Object { $_.GetDirectories().Count -eq 0 } | ForEach-Object {$_.FullName} | sort
    $smtpServer = ""
    $smtp = New-Object Net.Mail.SmtpClient($smtpServer)
    $msg = New-Object Net.Mail.MailMessage
    $msg.From = ""
    $msg.Subject = $mailsubject + $day_of_week
    $msg.IsBodyHTML = $false
    $msg.Body = $empty_dir

  • #16262

    Points: 502
    Helping Hand
    Rank: Major Contributor

    To answer your question, you are creating a string doing the for loop: ForEachObject{$_.FullName}

    Have you looked at using HTML reporting? Don Jones put together a free e-book on it and there are various other articles on Powershell HTML reporting. Basically:

    • Remove the ForEach logic
    • Update .IsBodyHTML to $true
    • Update .Body to ($empty_dir |ConvertTo-Html | Out-String)
  • #16263

    Points: 0
    Rank: Member

    The Body parameter of Send-MailMessage (or property of the MailMessage class, in this case) takes a String, and you're passing it an Array. Arrays, when automatically converted to strings, are separated by the output field separator ($OFS), which defaults to a space.

    The simplest way to get what you see at the console is to pipe your array to Out-String before assigning it to the Body property:

    $msg.Body = $empty_dir | Out-String
  • #16266

    Points: 0
    Rank: Member

    Great! Thank you, Dave and Rob. Simple is best for this little weekly report.

The topic ‘How to Format a list to be emailed?’ is closed to new replies.

denizli escort samsun escort muğla escort ataşehir escort kuşadası escort