2011-11-22 8 views
3

스크립트를 계속하기 전에 특정 로그 행을 기다리는 방법을 powershell에 알릴 수 있는지 궁금합니다. 나는 -Wait의 사용으로 인해 계속하지 않습니다 다음 텔 찾기 위해 무엇을 PowerShell을,계속하기 전에 powershell을 사용하여 특정 행이 나타날 때까지 기다림

Get-Content log.txt -Wait | select-string "keyword" 

그러나 PowerShell을 사용하여 관리. 진행하기 전에 한 번만 나타나는 줄을 기다릴 수있는 또 다른 방법이 있습니까?

답변

2

더 나은 방법은이 작업을 얻을 수 있습니다 :

while($true){ 
    Get-Content .\test.log -Wait | Select-String "keyword" | %{ write-host Found $_; break} 
} 

write-host "start script" 

가 효율적으로되지 않을 수 있습니다,하지만 당신은 그것을 이런 식으로 시도 할 수 있습니다 : 일부 실험 후 그것을

while(-not (gc .\test.log | select-string "keyword")){ sleep 1} 
write-host "start script" 

+0

두 행이 동시에 삽입되면 항목을 놓칠 수 있습니까? – JNK

+0

@JNK - 그걸보고있었습니다. 그것은 일어날 수 있습니다. 그래서 기본적으로 당신의 대답에 달려 있습니다. – manojlds

+0

@JNK - 오, 아니에요, 삭제하셨습니까? – manojlds

2

을 다음과 같은 일을 할 것 :

Get-Content log.txt -Wait | Select-String "keyword" | %{ write-host $_; break} 
+0

아, 나는 거의 같은 것을 덧붙였다. 하지만 나중에 스크립트를 시작하기를 원하지만 스크립트에서 다음 휴식 시간으로 넘어 가지 않습니다. 도움이된다면 내 대답보기 – manojlds

관련 문제