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