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,但還沒有弄清楚。 (編程是不是我的事,讓我知道,如果我需要回去,並添加額外的註釋。)
近乎完美。是否有可能在每個部分之間有一條空行?在PowerShell中,它正在進行換行,但是在電子郵件程序中,它只是做一個空格和第一個字母。 'FINISHING NULL SKY BAR NEEDS CLEANING AT CALENDER 13:12:00 ' –
只需在數組中添加換行符(「n」)即可。 – mjolinor
是的,在我回到這裏之前,我想到了。現在正在做一個雙換行符。但它夠好。謝謝你的幫助。 –