2015-02-05 72 views
0

這是代碼;啓動第二個腳本的powershell腳本

Get-Content -path c:\batchjobs\location\test.log -pattern -lt "2" > sleep -seconds (60) elseif -pattern -gt "2" | C:\batchjobs\location\output.txt 

所有我需要做的就是打開/啓動output.txt文件,當滿足條件的模式,這將發送電子郵件。

任何幫助,將不勝感激

+1

「*我所需要的只是打開/啓動output.txt文件*」 - 我不清楚這意味着什麼。是一個批處理文件output.txt?一個PowerShell文件?你想在某處發送email到output.txt嗎?在記事本中打開它? – NextInLine 2015-02-05 19:33:48

+0

'output.txt'只是一個佔位符,我有第二個powershell腳本,這將啓動 – user177073 2015-02-05 19:47:01

+0

因此,如果我理解正確,您是否嘗試通過* test.log *逐行進行並通過電子郵件向某人發送條件會見?如果是這樣,那麼* test.log中一行的示例是什麼?以及您想要匹配哪種模式? '-pattern -lt「2」'對我來說不是很清楚。 – NextInLine 2015-02-06 00:13:43

回答

1

假設test.log中的全部內容是單數,帶軟墊的空間,也許空行做,那麼你可以做

if (((Get-Content .\test.log) -join '').Trim() -gt 2) { .\my_script.ps1 } 

如果你需要有你的腳本解析的實際數字,那麼你想要更類似於

$x = ((Get-Content .\test.log) -join '').Trim(); 
if ($x -gt 2) 
{ 
    .\my_script.ps1 $x 
} 

如果你需要在一行上,如用於powershell -Command使用從非PowerShell命令行,你可以消除換行符:

$x = ((Get-Content .\test.log) -join '').Trim(); if ($x -gt 2) { .\my_script.ps1 $x } 
+0

謝謝,非常感謝 – user177073 2015-02-06 19:07:55

1

這可能是一個小更安全。這會將結果數字存儲在$ x中。出於某種原因,文件的內容包含無法分析爲整數的字符,$ x將包含0,$ parsedOk將爲$ false。

$x=$null 
$parsedOk = [int64]::TryParse($(gc .\test.log),[ref]$x) 
if($parsedOk -and $x -gt 2){ 
    .\my_script.ps1 $x 
} 
+0

非常好謝謝 – user177073 2015-02-06 20:15:12