2013-03-24 9 views
5
W:> $job = start-job { Write-Output "hi there"; throw "an error!" } | Wait-Job 
W:> $job | select * 


State   : Failed 
HasMoreData : True 
StatusMessage : 
Location  : localhost 
Command  : Write-Output "hi there"; throw "an error!" 
JobStateInfo : Failed 
Finished  : System.Threading.ManualResetEvent 
InstanceId : 882957a9-a5e0-4876-bd22-0dbd87512f10 
Id   : 7 
Name   : Job7 
ChildJobs  : {Job8} 
PSBeginTime : 3/24/2013 5:52:41 PM 
PSEndTime  : 3/24/2013 5:52:47 PM 
PSJobTypeName : BackgroundJob 
Output  : {} 
Error   : {} 
Progress  : {} 
Verbose  : {} 
Debug   : {} 
Warning  : {} 

Wohin ging meine Ausgabe? Wie sehe ich die Standard-Aus/Fehler-Streams?Wohin geht die Start-Job-Ausgabe?

Antwort

14

Jobs werden im Hintergrund ausgeführt, sodass sie nicht auf die Konsole schreiben. Sie müssen Receive-Job ausführen, nachdem ein Job abgeschlossen ist, um seine Ausgabe zu sammeln.

+1

Perfekt. Danke mein Herr. Ich möchte hinzufügen, dass es wichtig zu warten, bis der Auftrag abgeschlossen ist, bevor Sie versuchen, es zu erhalten. –

+0

@GeorgeMauer In der Tat. Ich fügte dieses Detail meiner Antwort hinzu. –

+0

Ich sehe dieses Verhalten nicht. Stattdessen bekommt meine Konsole zufällig eine Menge Output vom Job. Ich benutze jedoch nicht Wait-Job – Sam

Verwandte Themen