I needed to read the last line of a log file. PowerShell made it very, very, easy.
All you need to do is Get-Content
the file, and then pipe it to Select-Object
with the –last
parameter set to 1.
Here is the code snippet which does that:
$failure_reason = (Get-Content $file_txt | Select-Object -last 1)
And here is a (simple) version of the PowerShell script I wrote to read though a list of computers, and dump the last line to the screen:
$windows2000_PCs = (Get-Content c:\temp\pc-list.txt)
foreach ($computer in $windows2000_PCs)
{
$file_txt = "\\"+ $computer + "\c$\log\install.txt"
$install_result = (Get-Content $file_txt | Select-Object -last 1)
Write-Host $computer has install result of: $install_result
}
Write-Host Done!
Which outputs:
BROOMFONDLE has install result of: Program installed successfully on 21 DEC 2010 – 1000hrs
MAGICTHIGHS1 has install result of: Program failed to install – Error code 1603 on 11 DEC 2010 - 1321hrs
Done!
Things to note:
- c:\temp\pc-list.txt contains the list of computer names you wish to scan.
- the script is not idiot-proofed error-trapped.
ie. in a production version of this you would check that the computer being scanned is online, the install.txt file exists, and so on. - the Get-Content cmdlet will read though the entire file. Select-Object will retain the –last x lines you asked for. (for the technically minded, on my Windows 7 system, it opened the file with the following options “Desired Access: Generic Read, Disposition: Open, Options: Synchronous IO Non-Alert, Open No Recall, ShareMode: Read, Write”
Comments are closed.