[英]PowerShell script to tail log file on multiple remote servers
我需要完善這個腳本。 我需要它在多個(5個-都在同一位置的日志文件)Windows系統上運行。 我很難弄清楚如何確保可以同時“尾部”所有5台服務器上的條目的日志並返回“ OK”; 僅當在所有5台服務器上生成日志條目時才終止作業,而不僅僅是說其中4台。
這是要執行的操作:
$waitfor
) $serviceB = "my application service"
$logfile2 = "F:\App\log\wrapper.log"
$waitFor = "[4.2.3.GA (build: SVNTag=JBoss_4_2]”
Write-Host "Starting $serviceB"
Start-Service $serviceB
Write-Host "Waiting for $waitFor in $logfile2"
while (!((Get-Content $logfile2 -Tail 30) | ? {$_ -match $waitFor})) {
Start-Sleep -Seconds 5
}
我如何使用foreach
循環來完成-拖尾並等待CSV文件中所有5個遠程系統上的日志輸入?
簡而言之,您不能一次不在同一會話中,而不能一次全部。 每個日志必須位於其自己的會話中。 我怎么知道,因為我花了很多時間來嘗試實現這一目標。 好吧,您可以一次只配置一台服務器,完成后使用循環將其移至下一台服務器。
您可以使用for循環命中每個服務器主機,但是您需要為每個服務器彈出一個單獨的PowerShell實例。
好吧,您可以在一個控制台會話中,一次只處理一台服務器,等待其完成,然后向其發送消息,然后使用循環將其移至下一個。 但是,如果要花一些時間才能找到那根弦,那就像看着油漆變干一樣。
foreach ($RemoteHost in (Import-Csv -Path 'D:\Temp\serverlist.csv'))
{
# You code here
Invoke-Command -ComputerName $RemoteHost -Credential 'domain\adminname' -ScriptBlock {
# the rest of your code here:
}
}
由於您說的是遠程主機,所以這意味着您需要為他們啟用PSRemoting,以利用隱式刪除會話並使用遠程主機本地管理組中的帳戶。
您可以使用-tail -wait,並且也不需要該Start-Sleep和Line Grab步驟。
使用-tail -wait,將在創建條目時在寫入每個條目行時顯示日志。
Get-Content -Path $CurrentHostLog.FullName -Tail 0 -Wait
因此,盡管我不確定自己為什么要-tailtail並觀看這些日志滾動,因為您只是在尋找簡單的字符串
恕我直言,我建議您同時並行啟動每個作為后台作業,並讓該作業提醒您; 文字,電子郵件,屏幕警報等,當他們返回您想要的結果時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.