Powershell Jobs Parallel Ergebnis in DataTable mag bei GUI nicht ohne gehts
Servus,
folgendes geht im Trockentest:
Die Jobs rennen auch wunderbar parallel los und er liefert mir zu den Diensten auch die Werte.
Jetzt habe ich den obrigen Block versucht zu erweitern um das hinzufügen in eine DataTable.
Die Table ist an ein DGV gebunden und er gibt mir immer nur die Werte vom Ersten Job aus.
Bei 5 Servern bekomme ich so nur ServerA und dann 4 leere Zeilen.
Selbst das write-host gibt bei der Variante nichts aus.
Nutze ich den reinen Trockentest bekomme ich in der Console von allen Servern auch den Status der Dienste ausgegeben.
;( ?
Hat einer eine Idee?
Irgendwas falsch beim Zusammenbauen der $row?
VG
EDIT:
Übeltäter gefunden
Nachdem die Ergebnisse vom ersten Job abgearbeitet wurden kam das Cmdlet zu früh und räumte alle anderen Jobs ab. =)
folgendes geht im Trockentest:
$servers = @('ServerA','ServerB','ServerC','ServerD','ServerE' )
foreach ($server in $servers) {
$running = @(Get-Job | Where-Object { $_.State -eq 'Running' })
if ($running.Count -ge 2) {
$running | Wait-Job -Any | Out-Null
}
Write-Host "Starting job for $server"
Start-Job {
Param($server)
$PxeS = Invoke-Command -ComputerName $using:server -ScriptBlock { Get-Service -DisplayName "Service1" -ErrorAction SilentlyContinue }
$CoreS = Invoke-Command -ComputerName $using:server -ScriptBlock { Get-Service -DisplayName "Service2" -ErrorAction SilentlyContinue }
New-Object PSObject -Property @{ Servername=$using:server ; PxeS=$($PxeS).Status;CoreS=$($CoreS).Status }
}
}
Wait-Job * | Out-Null
foreach($job in Get-Job)
{
$result = Receive-Job $job
Write-Host $result.Servername 'PXE: ' $result.PxeS 'CoreS: ' $result.CoreS
}
Remove-Job -State Completed
Die Jobs rennen auch wunderbar parallel los und er liefert mir zu den Diensten auch die Werte.
Jetzt habe ich den obrigen Block versucht zu erweitern um das hinzufügen in eine DataTable.
$result = Receive-Job $job
$row = ($result.Servername,
$result.CoreS,
$result.PxeS,)
Write-Host $result.Servername 'PXE: ' $result.PxeS 'CoreS: ' $result.CoreS
$global:table.Rows.Add($row)
$dataGridView.Update()
Die Table ist an ein DGV gebunden und er gibt mir immer nur die Werte vom Ersten Job aus.
Bei 5 Servern bekomme ich so nur ServerA und dann 4 leere Zeilen.
Selbst das write-host gibt bei der Variante nichts aus.
Nutze ich den reinen Trockentest bekomme ich in der Console von allen Servern auch den Status der Dienste ausgegeben.
;( ?
Hat einer eine Idee?
Irgendwas falsch beim Zusammenbauen der $row?
VG
EDIT:
Übeltäter gefunden
Remove-Job -State Completed
Nachdem die Ergebnisse vom ersten Job abgearbeitet wurden kam das Cmdlet zu früh und räumte alle anderen Jobs ab. =)
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 348891
Url: https://administrator.de/forum/powershell-jobs-parallel-ergebnis-in-datatable-mag-bei-gui-nicht-ohne-gehts-348891.html
Ausgedruckt am: 16.04.2025 um 11:04 Uhr