Powershell - 电子邮件可用空间信息

Powershell - 电子邮件可用空间信息

我目前正在使用:

$emailFrom = "[email protected]"
$emailTo = "[email protected]"
$subject = "subject"
$body = "message"
$smtpServer = "mail.host.com"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)

并且我知道使用以下命令我可以找出所有硬盘上的可用空间:

Get-WmiObject WIN32_logicaldisk | sort -desc freespace | select -first 3 | format-table -autosize deviceid,devicetype,providername,freespace,size,volumename;

当我尝试这样做时:

$body = Get-WmiObject WIN32_logicaldisk | sort -desc freespace | select -first 3 | format-table -autosize deviceid,devicetype,providername,freespace,size,volumename;

但我在电子邮件中收到的只有以下内容:

    Microsoft.PowerShell.Commands.Internal.Format.FormatStartData Microsoft.PowerShell.Commands.Internal.Format.GroupStartData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData 
Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData Microsoft.PowerShell.Commands.Internal.Format.GroupEndData Microsoft.PowerShell.Commands.Internal.Format.FormatEndData

如何使用 powershell 通过电子邮件获取我的免费空间???

答案1

尝试:

$body = Get-WmiObject WIN32_logicaldisk | sort -desc freespace | select -first 3 | format-table -autosize deviceid,devicetype,providername,freespace,size,volumename | out-string

我刚刚在我的电脑上尝试过并且成功了。

有关此方法有效的原因,请参阅:

http://blogs.msdn.com/powershell/archive/2006/04/25/how-does-select-string-work-with-pipelines-of-objects.aspx

JR

答案2

您可以尝试以下操作:

$body_array = Get-WmiObject WIN32_logicaldisk | sort -desc freespace | select -first 3 | format-table -autosize deviceid,devicetype,providername,freespace,size,volumename;
$body = $body_array.ToString();

答案3

你可以改编我的帖子此主题

答案4

PowerShell 从 Get-WMIObject 获取对象流,排序并选择子集,然后生成剩余对象的文本表示——而不仅仅是处理纯文本。如果您想获得纯文本表示,只需将对 format-table 的调用更改为使用 select-object 即可。

相关内容