2011-02-17 46 views
3

我的意思是,當我打電話讓項目與目錄它轉儲到控制檯這樣如何讓獲得項目cmdlet的輸出變量作爲字符串

----    -------------  ------ ---- 
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

你想實現什麼做的轉換腳本字符串? – Filburt 2011-02-17 08:21:56

+0

我想通過電子郵件發送帶有大小和時間戳信息的目錄內容.. – aeon 2011-02-17 08:51:09

回答

6

如果我理解你以後,這應該工作:

$a = get-childitem <filespec> | 
    select name,length,lastwritetime | 
    format-table | out-string 

然後把$一個在你的電子郵件正文。

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 = "[email protected]" 
$MailMessage.To.Add("[email protected]") 
$MailMessage.Subject = 「Verzeichnisinhalt」 
$MailMessage.IsBodyHtml = $false 
$MailMessage.Body = $body 
$SmtpClient.Send($MailMessage)