Powershell cmd跟踪目录中的文件

Powershell cmd跟踪目录中的文件,powershell,tail,Powershell,Tail,我正在寻找Powershellcmd来打印目录中任何文件的最后5行数据 理想的 获取内容-尾部5-等待。\test.log 将从最后5行打印特定文件的尾部。如果有任何新内容被附加到该文件中,它将继续打印 类似地,我希望跟踪目录中的所有文件。如果任何文件被修改,则打印内容 试过这样的东西,没用 获取内容-Tail 5-等待。\folder*.log 虽然可以对多个文件使用-Tail,但使用-Wait时,只有第一个文件会报告其更改。但是,如果使用工作流并并行运行该命令,这是可能的 # Get-Tai

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

理想的

获取内容-尾部5-等待。\test.log

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

类似地,我希望跟踪目录中的所有文件。如果任何文件被修改,则打印内容

试过这样的东西,没用

获取内容-Tail 5-等待。\folder*.log


虽然可以对多个文件使用
-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

您可以使用
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