我的意思是当我用目录调用get-item时它会像这样转储到控制台
---- ------------- ------ ----
d---- 2/16/2011 8:27 PM 2011-2-16
-a--- 2/13/2011 8:24 PM 3906877184 SWP-Full Database Backup_2011-02-13
0
-a--- 2/16/2011 8:23 PM 3919766476 SWP-Full Database Backup_2011-02-16.bak
8
-a--- 2/12/2011 8:18 PM 3906877747 SWP-Full Database Backup_2011-02-12
2
-a--- 2/14/2011 8:21 PM 3875484467 SWP-Full Database Backup_2011-02-14
2
但是当我转换为字符串时,它会更改为
\\192.168.2.89\BwLive\2011-2-16 \\192.168.2.89\BwLive\SWP-Full Database Backup_2011-02-13 \\192.168.2.89\BwLive\SWP-Full
Database Backup_2011-02-16.bak \\192.168.2.89\BwLive\SWP-Full Database Backup_2011-02-12 \\192.168.2.89\BwLive\SWP-Full
Database Backup_2011-02-14
我的意思是省略长度,大小,时间属性 如何在转换为字符串时保留这些属性?
感谢。
答案 0 :(得分:6)
如果我理解你所追求的是什么,这应该有效:
$a = get-childitem <filespec> |
select name,length,lastwritetime |
format-table | out-string
然后将$ a放入您的电子邮件正文中。
答案 1 :(得分:3)
您应该查看Powershell为您格式化从管道收到的结果的各种选项。
如果您声明一个字符串变量以供以后用作电子邮件正文,您将收到与输出到控制台相同的格式。以下
$body = Get-ChildItem | Out-String
您可以通过添加Format-Table
CmdLet:
$body = Get-ChildItem | Format-Table -Property Name, Length | Out-String
您的发送脚本可能看起来像这样
$body = Get-ChildItem | Format-Table -Property Name, Length | Out-String
$SmtpClient = New-Object System.Net.Mail.SmtpClient
$MailMessage = New-Object System.Net.Mail.MailMessage
$SmtpClient.Host = "my.smtp.host.com"
$MailMessage.from = "sender@acme.com"
$MailMessage.To.Add("me@acme.com")
$MailMessage.Subject = “Verzeichnisinhalt”
$MailMessage.IsBodyHtml = $false
$MailMessage.Body = $body
$SmtpClient.Send($MailMessage)