2013-10-18 40 views
0

我正在尋找一種方法來做和Format-Table -HideTableHeaders一樣的事情,除了Format-List,我已經找遍了所有...但還沒有找到任何解決方案。Format-List w/No Headers

背景,我一遍又一遍地導入相同的csv,但隨着時間的推移,新行將被添加。當他們是,我正在發送一封電子郵件與新的信息。這裏是我想出了我自己的拼圖的各個部分:

##### send email-workorder.ps1 ##### 
$smtpServer = "smtp.acme.com" 
$current = import-csv .\current.csv -Delimiter "|" -header 'WO#', 'WO Cat', 'EQ#', 'EQName', 'EQLoc', 'Remark', 'Date', 'Time', 'Requestor' 
$master = import-csv .\master.csv -Delimiter "|" -header 'WO#', 'WO Cat', 'EQ#', 'EQName', 'EQLoc', 'Remark', 'Date', 'Time', 'Requestor' 
$compared = Compare-Object $current $master -Property "WO#" -PassThru | Where-Object{$_.SideIndicator -eq '<='} | Select-Object 'EQName', 'EQLoc', 'Remark', 'Time' | Format-List | Out-String 

if ($compared) { 
# Send E-Mail 
$msg = new-object Net.Mail.MailMessage 
$smtp = new-object Net.Mail.SmtpClient($smtpServer) 

$msg.From = "[email protected]" 
$msg.To.Add("[email protected]") 
$msg.Subject = "New WO Submitted" 
$msg.Body = $compared 

$smtp.Send($msg) } 

批處理文件,將調用PowerShell腳本:

##### email-workorder.bat ##### 
##### this will be called by a scheduled task, set to run every five minutes ##### 
cd c:\scripts 
sqlcmd -E -S acme-workorder-server -d WORDERDB -i worec.sql -h-1 -o "current.csv" -W -s "|" 
powershell.exe -command .\email-workorder.ps1 
move /y current.csv master.csv 
exit 

是中引用的文件worec.sql該批處理文件:

##### worec.sql ##### 
set nocount on; 
SELECT * FROM (
SELECT top 1000 [WONUMB] 
     ,[WORKCAT] 
     ,[EQNUMB] 
     ,[EQNAME] 
     ,[EQLOC] 
     ,[REMARK] 
     ,CAST([DATEISSUED] As DATE) As DATEISSUED 
     ,CAST([TIMEISSUED] As TIME(0)) As TIMEISSUED 
     ,[REQUESTEDBY] 
    FROM [WORDERDB].[dbo].[WHREC] 
    WHERE (WORKCAT = 'BRK' Or 
     WORKCAT = 'SAF' Or 
     WORKCAT = 'CPU' Or  
     WORKCAT = 'COR') And 
     WOCLOSED = 'N' 
    ORDER BY [WONUMB] desc) x 
    ORDER BY [WONUMB] asc 

現在它正在發送的電子郵件是這樣的:

EQName : PREP   
EQLoc : NULL 
Remark : need blown bulbs [email protected] 
Time : 16:40:00 

EQName : LIFT TRUCK 9   
EQLoc : PREP 
Remark : guard obstructing view and probe no 
Time : 17:57:00 

EQName : WASHER #2    
EQLoc : PREPARATION 
Remark : sat 1 has 2 leaks and sat 2 has 2 l 
Time : 22:38:00 

EQName : FINISHING 
EQLoc : NULL 
Remark : Need to repair pump on first statio 
Time : 19:05:00 

EQName : FINISHING 
EQLoc : NULL 
Remark : SKY BAR NEEDS CLEANING 
Time : 13:12:00 

這很好,除了我想擺脫左邊的標題,只是有實際的信息。這將通過手持無線電的短信發送,所以我想盡可能減少信息。我想擺脫Hh:mm:00,但還沒有弄清楚。 (編程是不是我的事,讓我知道,如果我需要回去,並添加額外的註釋。)

回答

1

翻折管材可讀性:

$compared = Compare-Object $current $master -Property "WO#" -PassThru | 
Where-Object{$_.SideIndicator -eq '<='} | 
foreach {($_.EQName,$_.EQLoc,$_.Remark,$_.Time,"`n") | out-string} 
+0

近乎完美。是否有可能在每個部分之間有一條空行?在PowerShell中,它正在進行換行,但是在電子郵件程序中,它只是做一個空格和第一個字母。 'FINISHING NULL SKY BAR NEEDS CLEANING AT CALENDER 13:12:00 ' –

+0

只需在數組中添加換行符(「n」)即可。 – mjolinor

+0

是的,在我回到這裏之前,我想到了。現在正在做一個雙換行符。但它夠好。謝謝你的幫助。 –