Powershell cmd to Tail over Directory目录

时间:2016-03-02 06:17:56

标签: powershell tail

我正在寻找Powershell cmd来打印目录中任何文件的最后5行数据。

理想情况

  

Get-Content -Tail 5 -Wait。\ test.log

将在最后5行的特定文件上打印尾部。如果有任何新内容被附加到该文件,它将继续打印。

同样,我想从目录中查找所有文件。如果任何文件被修改,则打印内容。

尝试过这样的事情,没有用!

  

Get-Content -Tail 5 -Wait。\ folder * .log

2 个答案:

答案 0 :(得分:2)

虽然您可以将-Tail与多个文件一起使用,但在使用-Wait时,只有第一个文件会报告更改。但是,如果您使用工作流并并行运行命令,则可以这样做。

# Get-Tail.ps1
Workflow Get-Tail
{
    param (
        [string[]]$Path,
        [int]$Tail
    )

    foreach -parallel ($File in $Path) {
        Get-Content -Path $File -Tail $Tail -Wait
    }
}

然后运行以下命令:

. .\Get-Tail.ps1
$files = (dir .\folder*.log).FullName
Get-Tail -Path $files -Tail 5

答案 1 :(得分:0)

您可以使用FileSystemWatcher对象和Register-ObjectEvent cmdlet来监视对文件系统所做的更改。像这样:

$fw = New-Object System.IO.FileSystemWatcher
$fw.Path = "C:\temp\events\test"
Register-ObjectEvent -InputObject $fw -EventName Changed -SourceIdentifier File.Changed -Action {
    #$event  
    write-host "file changed : $($event.SourceEventArgs.Name)"
    get-content  $event.SourceEventArgs.fullpath -tail 5 |out-host
}  |out-null

#unregister event when done
#Unregister-Event -SourceIdentifier file.changed