2015-02-05 61 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