2013-07-10 51 views
0

我正試圖讀取日誌文件的最後一行並解析它以獲取特定的信息。日誌文件是.csv,我需要第三個字段中存在的號碼。嘗試將cmdlet的輸出存儲到變量

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 
} 

但是這不會輸出任何東西。

謝謝。

+0

我懷疑的東西還在寫爲'logss.txt',所以'GET-Content'永遠不會完成,和因此腳本永遠不會迴應'$ a'。 –

回答

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 
}