Arrays 从文本中获取特定值并插入到数组中,然后对其进行比较

Arrays 从文本中获取特定值并插入到数组中,然后对其进行比较,arrays,powershell,powershell-2.0,powershell-3.0,Arrays,Powershell,Powershell 2.0,Powershell 3.0,我是Powershell的新手,我正在尝试编写一个脚本来提取一些数据,然后启动一个命令。 交易如下: 我有一个有时出错的应用程序,我必须在日志文件中查找特定的错误代码始终相同,在同一行中我有一个ID,IDT 所以我的问题是: 我必须每5分钟查看一次该日志文件,搜索错误代码CFTT82E,并在这一行中获取我的IDT值,该值为数字,如下所示: 15年1月14日12:20:06 CFTT82E传输中止IDTU=A0009L7Q部分=DGISSL IDF=LKEMDDIB IDT=A1512489 73

我是Powershell的新手,我正在尝试编写一个脚本来提取一些数据,然后启动一个命令。 交易如下: 我有一个有时出错的应用程序,我必须在日志文件中查找特定的错误代码始终相同,在同一行中我有一个ID,IDT

所以我的问题是: 我必须每5分钟查看一次该日志文件,搜索错误代码CFTT82E,并在这一行中获取我的IDT值,该值为数字,如下所示:

15年1月14日12:20:06 CFTT82E传输中止IDTU=A0009L7Q部分=DGISSL IDF=LKEMDDIB IDT=A1512489 730 ABO 215>

在变量中获得值后,我必须再等待5分钟,然后使用IDT的值启动命令,也就是说:

cmd-总计$IDT\U值

现在,一旦命令成功,我只需与CFTR12I代码和IDT值进行比较,我将得到如下消息:

2015年1月14日15:48:39 CFTR12I为用户系统处理的端部零件=DGISSL IDF=*IDT=A1512489>

此时,我将退出,否则,我将重新启动相同的命令

但是,由于这个脚本应该每5分钟循环一次,下次解析日志文件时,我应该忽略我以前已经使用过的IDT。 我想在日期结束时用每日IDT值创建一个数组,我们可以清空数组或变量,或者这个对象是什么,然后比较每个循环的值

我已经开始了,但由于我是新手,我认为我没有一个好的开始:

clear
Get-Content C:\CFT\LOG2014011523590001 |

foreach { 

$line = $_.Trim()

If ($line.Contains('CFTT82E')) {

    $str = $line.Split(' ')

    $TIDT = [ordered]@{

        IDT  = $_.SubString(101)

    }

    New-Object PsObject -Property $TIDT
    }
} | Out-String 

我知道我问了很多问题,但欢迎提出任何建议。

这可能会对您有所帮助。创建用于查找存储值的ArrayList,然后查看文件。如果IDT不在列表中,请对其执行某些操作,然后将其添加到列表中,以便在后续运行时忽略它

$list = New-Object System.Collections.ArrayList

while (1) {

    $content = get-content "C:\your\file.txt"

    foreach ($line in $content) {
        if ($line -match "CFTT82E.*IDT=(.+?)\b.*") {
            $idt = $matches[1]
            if(!$list.contains($idt) {
                #
                # Do whatever you need to do with $idt
                # 
                $list.add($idt)
            }
        }
    }
    sleep -Seconds(5*60)
}

嘿,arco444,谢谢你的回答。我的问题是如何分割IDT值,将其插入变量或数组中,然后应用上述循环。然后,一旦循环中的命令成功,在下一次执行时,将此IDT从我的研究中排除,这样它就不会使用相同的IDT再次运行该命令。我希望现在它更清晰。再次感谢你,你是最棒的。脚本工作得很好,但是如果我的命令不能工作,也就是说,我有第二个代码CFTR12I代码和IDT值,我必须重新运行该命令。因此,一旦命令执行,我还必须验证与我在命令中运行的IDT相关联的CFTR12I代码。否则,剧本就是伟人!!再次感谢大家!!!