Ok, Here is my script
$server=@("SERVER1","SERVER2")
$A=@()
foreach($srv in $server){
start-job -scriptblock {Get-AppHangs $srv}}
while (Get-Job -State "Running"){}
foreach($JB in Get-Job){$A+=Receive-Job $JB}
Remove-Job *
$A|Out-GridView
function Get-AppHangs($srv){
$A=@()
$XX=Get-EventLog -ComputerName $srv -LogName "application" | Where-Object {$_.InstanceID -ge 1000 -and $_.InstanceID -lt 1005} | select -First 5
foreach($x in $XX){
$time = $_.Time.ToString()
$obj=New-Object PSObject
$obj|Add-Member -MemberType "NoteProperty" -Name Server -Value $srv
$obj|Add-Member -MemberType "NoteProperty" -Name Index -Value $x.Index
$obj|Add-Member -MemberType "NoteProperty" -Name Time -Value $x.Time -SecondValue System.string
$obj|Add-Member -MemberType "NoteProperty" -Name EntryType -Value $x.EntryType
$obj|Add-Member -MemberType "NoteProperty" -Name Source -Value $x.Source
$obj|Add-Member -MemberType "NoteProperty" -Name InstanceID -Value $x.InstanceID
$obj|Add-Member -MemberType "NoteProperty" -Name Message -Value $x.Message
$A+=$obj
}
$obj3=New-Object PSObject
$A+=$obj3
return $A
}
My problem is that I am expecting the line $A|Out-GridView to produce something meaningful. but the gridview doesn't even pop up.
So if I look down this script, I don't see anything glaring at me, but I am hoping a fresh set of eyes can review...
The purpose of this script is to be able to find all the Application Hang ID's in the event viewer for a set of servers and show up in a nice gridview...
I am able to see the gridview if I cut out the start-job and receive-job business, but I want to make this run faster and more efficient.
heeeeelp ;) Thanks in advance! Also I couldn't figure out how to get the Time property into my custom object... if you have a tip for that, that would be amazing as well.
UPDATED Script:
$server=@("SERVER1","SERVER2")
$A=@()
foreach($srv in $server)
{
start-job -scriptblock {
$A=@()
$XX=Get-EventLog -ComputerName $srv -LogName "application" | Where-Object {$_.InstanceID -ge 1000 -and $_.InstanceID -lt 1005} | select -First 5
foreach($x in $XX){
$obj=New-Object PSObject
$obj|Add-Member -MemberType "NoteProperty" -Name Server -Value $srv
$obj|Add-Member -MemberType "NoteProperty" -Name Index -Value $x.Index
$obj|Add-Member -MemberType "NoteProperty" -Name EntryType -Value $x.EntryType
$obj|Add-Member -MemberType "NoteProperty" -Name Source -Value $x.Source
$obj|Add-Member -MemberType "NoteProperty" -Name InstanceID -Value $x.InstanceID
$obj|Add-Member -MemberType "NoteProperty" -Name Message -Value $x.Message
$A+=$obj}
$obj3=New-Object PSObject
$A+=$obj3
return $A
}
}
while (Get-Job -State "Running"){}
foreach($JB in Get-Job){$A+=Receive-Job $JB}
Remove-Job *
$A|Out-GridView