我有一個運行在遠程機器上的PowerShell腳本。我已經將數據寫入文本文件,因爲它完成了它的工作。一旦完成,它會寫入一個特定的行。Powershell監視文本文件
我有這個在當地PS腳本監視遠程機器上的文件:
Get-Content -Path $Path -Tail 0 -Wait
這是偉大的工作,但我怎麼告訴它停止監視,一旦達到特定行?
我厭倦了把它變成一個while while循環,但它永遠不會釋放以完成這個操作。
這裏是一個鏈接的簡化版本什麼我問:
How to monitor a text file in realtime
第一個答案是好的,但我不想只是看一定行我想給他們寫所有VIA write-host直到該短語從獲取內容中斷開並繼續執行腳本的剩餘部分。
更新:這是我終於結束了。由於我退出foreach對象的方式並不美觀。
Get-Content -Path $path -Tail 0 -wait | ForEach-Object{if($_ -match $word){write-host "- $_" ;cjklnsrvf } else {write-host "- $_"} }
我在上面的if語句中使用了Try和Catch作爲cjklnsrvf。這是因爲ForEach-Object不能使用break或continue語句。看起來,在管道ForEach循環時,它會變成(別名)ForEach-Object cmdlet。 ForEach-Object cmdlet不像foreach循環那樣使用break和continue命令。如果您在ForEach-Object中使用中斷,它將立即退出整個腳本。在一個網站上有一個人通過垃圾引發循環死亡,並且確實也在這裏工作。
感謝那些幫助。和休息..好..你知道
讓它2倒票。堆棧溢出不是一種編碼服務。用你已經嘗試過的和你研究過的東西炫耀社區。當你沒有表現出任何努力來解決你自己的問題時,爲什麼其他人應該爲你寫代碼? – dfundako
因爲我無法分享代碼!我將不得不花三個小時重寫它,只是爲了讓你看到它,然後它不會做我正在做的事情。這很簡單,我有一個腳本將數據寫入文件,我需要讀取它,直到它到達特定行....沒有關於-tail或-wait和管道的文檔,如果語句不工作... – reddragon72