Powershell cmd 跟踪目录文件
Powershell cmd to Tail over the files of Directory
我正在寻找 Powershell
cmd 来打印目录中任何文件的最后 5 行数据。
理想情况下
Get-Content -Tail 5 -Wait .\test.log
将从最后 5 行开始在特定文件上打印尾部。如果任何新内容被附加到该文件,它将继续打印。
同样,我想跟踪目录中的所有文件。如果任何文件被修改,打印内容。
试过类似的东西,没用!
Get-Content -Tail 5 -Wait .\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
我正在寻找 Powershell
cmd 来打印目录中任何文件的最后 5 行数据。
理想情况下
Get-Content -Tail 5 -Wait .\test.log
将从最后 5 行开始在特定文件上打印尾部。如果任何新内容被附加到该文件,它将继续打印。
同样,我想跟踪目录中的所有文件。如果任何文件被修改,打印内容。
试过类似的东西,没用!
Get-Content -Tail 5 -Wait .\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