2016-03-02 59 views
2

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

理想

获取内容-tail 5 -Wait。\ test.log中

将打印在尾部从去年5条线的具体文件。如果任何新内容被附加到该文件,它将继续打印。

同样,我想尾随目录中的所有文件。如果有任何文件被修改,请打印内容。

尝试这样的事情,没有工作!

获取内容-tail 5 -Wait。\文件夹* .LOG

回答

2

虽然你可以使用-Wait只有第一个文件的时候都会有它的变化报道使用-Tail有多个文件。但是,如果您使用工作流并且并行运行命令,则这是可能的。

# 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 
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