尝试将cmdlet的输出存储到变量中

时间:2013-07-10 15:39:14

标签: windows powershell scripting powershell-v3.0

我试图读取日志文件的最后一行并解析它以获取特定信息。日志文件是.csv,我需要第三个字段中的数字。

while (1)
{ 
  Get-Content -Path C:\Users\alk6842\Desktop\logss.txt -Tail 1 -Wait | Foreach {($_ -split ',',4)[2]} | Foreach {($_ -split ' ',3)[1]}
}

这可以将它放到屏幕上,但是我想将数字存储在变量中或作为数组中的元素存储,以便我可以使用它。我试过了

while (1)
{ 
  $a = Get-Content -Path C:\Users\alk6842\Desktop\logss.txt -Tail 1 -Wait | Foreach {($_ -split ',',4)[2]} | Foreach {($_ -split ' ',3)[1]}
  $a
}

但这不会输出任何内容。

感谢。

1 个答案:

答案 0 :(得分:1)

为什么使用-Tail 1 -Wait选项?这意味着管道永远不会完成,如果管道没有完成,它将永远分配给$a

如果您要处理它并使用-Wait,请在Foreach-object块内处理:

Get-Content -Path C:\Users\alk6842\Desktop\logss.txt -Tail 1 -Wait | 
ForEach-Object {
    $first = ($_ -split ',',4)[2];
    $second = ($_ -split ' ',3)[1]
    #do whatever processing you want
}