Étant donné que get-content lit tout le fichier, il est d'aucune utilité pour moi. Le code suivant fonctionne pour ce que j'en avais besoin, même si il y a probablement quelques problèmes avec l'encodage des caractères. C'est effectivement tail-f, mais il pourrait facilement être modifiés pour obtenir le dernier x octets, ou le dernier x lignes, si vous voulez la recherche vers l'arrière pour les sauts de ligne.
$filename = "\wherever\your\file\is.txt"
$reader = new-object System.IO.StreamReader(New-Object IO.FileStream($filename, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Read, [IO.FileShare]::ReadWrite))
#start at the end of the file
$lastMaxOffset = $reader.BaseStream.Length
while ($true)
{
Start-Sleep -m 100
#if the file size has not changed, idle
if ($reader.BaseStream.Length -eq $lastMaxOffset) {
continue;
}
#seek to the last max offset
$reader.BaseStream.Seek($lastMaxOffset, [System.IO.SeekOrigin]::Begin) | out-null
#read out of the file until the EOF
$line = ""
while (($line = $reader.ReadLine()) -ne $null) {
write-output $line
}
#update the last max offset
$lastMaxOffset = $reader.BaseStream.Position
}
J'ai trouvé le plus de code pour faire cela ici.