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