Mail is going but with message "System.Collections.Specialized.OrderedDictionary

Hi,

Mail is going but with message "System.Collections.Specialized.OrderedDictionary "
Below is the code.


$DHCPSERVERs = Get-Content “D:\DHCP.txt”
$Prop = [ordered]@{}
foreach ($DHCP in $DHCPSERVERs)
{
$Prop.ComputerName = $DHCP
$MB = Get-Item “\$DHCP\C$\Windows\System32\dhcp\dhcp.mdb” | select -ExpandProperty Length
$prop.MDBSize =($MB/1MB).ToString(“0.00”+" MB")
New-Object PSObject -property $Prop

}
Send-MailMessage -To bshwjt@live.com -from DHCPADMINs@live.com -Subject “dhcp.mdb Size”-Body $Prop -SmtpServer 10.224.34.8

Hi Biswajit,

Try this,

 $DHCPSERVERs = Get-Content "D:\DHCP.txt"
$Prop = [ordered]@{}
$Propobject = New-Object -TypeName PSobject

foreach ($DHCP in $DHCPSERVERs)
{
$Prop.ComputerName = $DHCP
$MB = Get-Item "\\$DHCP\C$\Windows\System32\dhcp\dhcp.mdb" | select -ExpandProperty Length
$prop.MDBSize =($MB/1MB).ToString("0.00"+" MB")

$Propobject | Add-Member -Membertype NoteProperty -Name $Prop.ComputerName -Value $Prop.MDBSize

}

Send-MailMessage -To bshwjt@live.com -from DHCPADMINs@live.com -Subject “dhcp.mdb Size”-Body $Propobject -SmtpServer 10.224.34.8

In the original the new object was being created but it wasn’t being assigned to a variable to be used in the Send-MailMessage -Body.

In the example I’ve given the object is created outside of the loop and then has note properties added that contain the (Name) Computer name and (Value) MDBSize.

Hope that helps.

Thanks Brendan. That works fine but output came in a Single line.

@{srv0003.live.com=8,01 MB; srv0017.live.com=3,01 MB; srv0009.live.com=3,01 MB; srv0004.live.com=8,01 MB; srv0046.live.com=3,01 MB; srpacinf6013.live.com=3,01 MB}

Need similar output below

srv0003.live.com=8,01 MB
srv0017.live.com=3,01 MB
srv0009.live.com=3,01 MB
srv0004.live.com=8,01 MB
srv0046.live.com=3,01 MB
srv0061.live.com=3,01 MB

#requires -version 3
#https://powershell.org/forums/topic/mail-is-going-but-with-message-system-collections-specialized-ordereddictionary/

$results = foreach ($server in (Get-Content -Path C:\Ephemeral\dhcp.txt))
{
    [PSCustomObject]@{
        ComputerName = $server
        MDBSize = "{0:N2} MB" -f $((Get-Item "\\$server\C$\Windows\System32\dhcp\dhcp.mdb").Length / 1mb)
    }
}
Out-String -InputObject $results -OutVariable body | Write-Verbose

Send-MailMessage -To bshwjt@live.com -from DHCPADMINs@live.com -Subject "dhcp.mdb Size" -Body $body -SmtpServer 10.224.34.8

Thanks Bob. Great