PowerShell脚本到尾部日志文件的多个远程服务器

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell脚本到尾部日志文件的多个远程服务器相关的知识,希望对你有一定的参考价值。

我需要擦亮这个脚本。我需要它在多个运行(5 - 都在同一个位置的日志文件)的Windows系统。我有一个很难搞清楚如何同时保证我能“尾巴”的日志全部5台服务器上的条目,并返回“确定”;终止,只有当所有5台服务器上生成的日志条目,而不只是让我们说他们的4工作。

下面是它是什么意思做:

  1. 启动服务,
  2. “尾巴”的日志文件
  3. 确认日志文件中包含的条目($waitfor
  4. 一旦日志条目中产生的终止
$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脚本

Powershell企业应用 - 第05章 编写Powershell日志系统

按顺序运行多个Powershell脚本 - 在文件夹上 - 将脚本合并到主脚本中

Powershell - 运行位于远程机器上的脚本,该脚本反过来从网络共享访问文件