2017-08-08 1 views
1

私のロードプロセスが失敗したときに電子メールアラートが表示されません。以下はスクリプトです。Powershellスクリプトが電子メールアラートを送信できません

$body = Get-Content -Path D:\APPDATA\FDMEE\Scripts\output.txt | Out-String 
$fail = Get-Content "D:\APPDATA\FDMEE\Scripts\output.txt" | Select-String "FAILED" 
if($fail-eq "$True"){Send-MailMessage -From "[email protected]" -To ""[email protected]""-Subject " Load failed on the Production Server." -Body "$body" -Attachments "D:\APPDATA\FDMEE\Scripts\output.txt" -smtpServer mail.xpioc.com} 

条件の仕事をするために私は私が間違っているのどこ知っていると方法を提案してくださいOUTPUT.TXTコンテンツ

process_id  : 50836 
STATUS   : FAILED 
RULE_ID   : 16 
RULE_NAME  : INTERNATIONAL 

答えて

3

変更この:これに

$fail = Get-Content "D:\APPDATA\FDMEE\Scripts\output.txt" | Select-String "FAILED" 
if($fail-eq "$True") 

$fail = Get-Content "D:\APPDATA\FDMEE\Scripts\output.txt" | Select-String "FAILED" -Quiet 
if($fail) 

コードがテストされています$fail変数に一致する文字列 "True"が含まれているかどうかを確認します。

LotPingsコメントごとに、スイッチをSelect-Stringに追加すると、真偽の結果が得られます。 true/falseの結果が真であるかどうかを確認するために$failをテストすることができます。

+0

'Select-String'の結果オブジェクトが必須ではない場合は、' -Quiet'を使用して結果が本当にブール値になるようにすることができます。もちろん必要ありません。 – Matt

+0

スクリプトを変更しました if($ fail){Send-MailMessage -From "[email protected]" - To "" [email protected] "" - 件名 "運用サーバーでの読み込みに失敗しました。 -Body "$ body" -Attachments "D:¥APPDATA¥FDMEE¥Scripts¥output.txt" -smtpServer mail.xpioc.com}。 ロードが正常に実行されても、電子メールアラートが表示されます。私は、私が間違っているならば、私がif($ fail)状態の電子メールアラートを受け取ることになっていないと思います。私は、文字列を認識していないと思います。 output.txtと process_idを:50893 STATUS:SUCCESS RULE_ID:16 RULE_NAME:VARをSLSために '-Quiet'パラメータなしINTERNATIONAL –

+0

マーク' $は '含まfail'will STATUS:FAILED'とあれば$ failは空ではないので、常に真です。 – LotPings

関連する問題