2016-03-02 60 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