と同じことを行う方法を探していますがFormat-Table -HideTableHeaders
、 を除いてFormat-List
、周りを見回しましたが、解決策が見つかりませんでした。
バックグラウンドで、同じ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 = "workorder@acme.com"
$msg.To.Add("mechanic@acme.com")
$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
バッチ ファイルで参照される wearec.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 replaced@checkers
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 も削除したいのですが、まだわかりません。(プログラミングは私の趣味ではないので、戻ってコメントを追加する必要がある場合はお知らせください。)