0

と同じことを行う方法を探していますが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 も削除したいのですが、まだわかりません。(プログラミングは私の趣味ではないので、戻ってコメントを追加する必要がある場合はお知らせください。)

4

1 に答える 1