PowerShell脚本到尾部日志文件的多个远程服务器
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell脚本到尾部日志文件的多个远程服务器相关的知识,希望对你有一定的参考价值。
我需要擦亮这个脚本。我需要它在多个运行(5 - 都在同一个位置的日志文件)的Windows系统。我有一个很难搞清楚如何同时保证我能“尾巴”的日志全部5台服务器上的条目,并返回“确定”;终止,只有当所有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
循环来实现让我们说 - 尾巴和等待日志条目上的所有5个远程系统在一个CSV文件?
简而言之,你不能,不能在同一个会话,一次全部。每个日志必须在其自己的会话。我怎么知道,因为我已经试过wayyyy太多的时间来实现这一目标。嗯,你可以,做一台服务器在同一时间,和当那是使用一个循环做移动到下一个。
您可以使用一个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 - 等待,并消除该启动睡眠和线路抢一步也需要。
使用-tail - 等待,将显示日志,因为当一个条目被写入每个条目行。
Get-Content -Path $CurrentHostLog.FullName -Tail 0 -Wait
所以,虽然我不是真正知道为什么你会想这-tail,看这些日志(一个或多个),因为您滚动只是在寻找一个简单的字符串
恕我直言,我建议刚开始各自如平行后台作业,并有你的职位空缺通知;文本,电子邮件,屏幕警报,等等,你当他们返回的结果你是经过。
以上是关于PowerShell脚本到尾部日志文件的多个远程服务器的主要内容,如果未能解决你的问题,请参考以下文章
用于删除或存档旧日志文件的 PowerShell 脚本在本地运行良好,但在远程位置无法运行
powershell Powershell尾部有一个日志文件
Powershell企业应用 - 第05章 编写Powershell日志系统