2016-06-07 249 views
1

我有一個腳本運行,它鏡像兩個目錄並更新有關兩個目錄之間發生的事情的日誌文件。我想解析這個日誌文件以獲取更新(當腳本正在運行時),並且我希望這些日誌文件向我發送更改內容的電子郵件,例如通知。另外 - 如果可能的話,我不想多次通知同一位信息?更新PowerShell解析日誌文件

我對我怎麼會去通過一些命令列出的在線閱讀後做這個不確定。

Tldr; 真的所有我在找做的是,當行被添加到日誌文件,解析該文件以獲得更新的路線,沒有得到任何其他線路。

並非所有強大的PowerShell的所以任何幫助將不勝感激。

回答

2

你可以有PowerShell的獲取每個新行,因爲它由-Wait參數傳遞給Get-Content用武之地。然後,您可以將其傳遞到Foreach-Object腳本塊中以執行您所需的任何操作。

Get-Content $logfile -Tail 0 -Wait | foreach { 
    "Another line was added: " + $_ 
} 

-Tail N參數會導致Get-Content只得到最後N行;在這種情況下爲零。這會導致它跳過文件中的所有內容,並且只會將新添加的行傳遞到腳本塊。

注:此cmdlet將繼續運行,直到您按Ctrl + C(或以其他方式阻止其PowerShell進程),這使得它比使用在腳本更好的在互動提示取消。

+0

非常感謝我一直在尋找這個年齡!我是否會將電子郵件腳本傳遞給foreach,以便通過電子郵件將每條新行發送給我自己?那麼它會發送每一行,因爲它是在正確的? 再次感謝! :) – flanelman

+0

你會把命令放在'foreach {...}'塊中。在該塊內部,$ _'變量包含已添加的完整行。 –

+0

所以我應該發郵件「$ _」?作爲包含該行的正文? :) – flanelman