わかりました、これが私のスクリプトです
$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
}
私の問題は、行 $A|Out-GridView が意味のあるものを生成することを期待していることです。しかし、グリッドビューもポップアップしません。
したがって、このスクリプトを見下ろしても、私を睨みつけているものは何も見えませんが、新鮮な目でレビューできることを願っています...
このスクリプトの目的は、一連のサーバーのイベント ビューアですべてのアプリケーション ハング ID を見つけて、適切なグリッドビューに表示できるようにすることです...
ジョブの開始と受信のビジネスを切り取れば、グリッドビューを表示できますが、これをより高速かつ効率的に実行したいと考えています。
heeeeelp ;) よろしくお願いします!また、カスタム オブジェクトに Time プロパティを取得する方法もわかりませんでした。そのためのヒントがあれば、それも素晴らしいことです。
更新されたスクリプト:
$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