3

I am writing a PowerShell script for my morning routine. I want to pull only the Warnings and Errors from a list of remote servers. Currently I am only getting either Warnings or Errors. I am not certain how to retrieve both. Once I pull the info, it doesn't include the server. My query is below:

# SERVER LIST PROPERTIES
# Get computer list to check disk space. This is just a plain text file with the servers listed out.
 $computers = Get-Content "C:\MorningChecks.txt"; 

# QUERY COMPUTER SYSTEM EVENT LOG
foreach($computer in $computers)
{
 Get-EventLog -LogName System -EntryType Error -After (Get-Date).Adddays(-1) | Format-Table -Wrap ;
}
SQLGooner
  • 31
  • 1
  • 1
  • 2

1 Answers1

2

The -EntryType Parameter accepts an array of strings for the filtering.

So to filter only for Errors you would use the parameter:

Get-EventLog -LogName System -EntryType Error -After (Get-Date).Adddays(-1) 

To filter for Errors and Warnings:

Get-EventLog -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-1) 

To get the computer name, you have to add it to the -Property parameter on the end of the Format-Table:

Format-Table -Wrap -Property MachineName, Index, TimeGenerated, EntryType, Source, InstanceID, Message -AutoSize

-- Edit

To answer your question on the machine name showing your own machine, it's because when you run Get-EventLog you are just running it for your local machine. You forgot to specify the -ComputerName parameter in your foreach loop. Your foreach loop should look like:

foreach($computer in $computers)
{
 Get-EventLog -ComputerName $computer -LogName System -EntryType "Error","Warning" -After (Get-Date).Adddays(-1) | Format-Table -Wrap -Property MachineName, Index, TimeGenerated, EntryType, Source, InstanceID, Message -AutoSize ;
}
HAL9256
  • 12,384
  • 1
  • 34
  • 46
  • Thank you so much. I am still having an issue. MachineName returns my local hostname. Not the remote hostname. – SQLGooner Jan 21 '14 at 18:42