Umleiten der Powershell-Ausgabe von einem Skript, das von TaskScheduler ausgeführt wird, und überschreiben die Standardbreite von 80 Zeichen

8

Ich habe ein Powershell-Skript, das vom Taskplaner aufgerufen wird. Die Definition der Aufgabe leitet auch die Ausgabe mit & gt; & gt; in eine Protokolldatei. Das PowerShell-Skript ruft ein C # -Konsolenprogramm auf, das Ausgaben erzeugt, die länger als 80 Zeichen sind. Die resultierende Ausgabe in der Protokolldatei wickelt jedoch die gesamte Ausgabe aus dem C # -Programm auf 80 Zeichen um. Beachten Sie, dass nur die Ausgabe von dem C # -Programm umbrochen wird. Alle anderen Ausgaben des Skripts (generiert von Write-Host) werden nicht umgebrochen. Beachten Sie außerdem, dass dieses Wrapping nur auftritt, wenn das Skript vom Taskplaner ausgeführt wird.

Hier ist die Aufrufkette des Skripts:

  • Die Taskdefinition ruft ein .cmd-Skript (RunWidthTest.cmd)

  • auf
  • RunWidthTest.cmd: powershell -File. \ RunReports.ps1 & gt; & gt; C: \ Protokoll \ Ausgabe.log

  • RunReports.ps1 (Schnipsel):

    Write-Host "============================================ ============= Laufende Berichte für die Date-Datei für $ valueDate "

    . \ ReportRunner.exe --ValueDate $ WertDatum | Aus Standard

Beachten Sie, dass das Outout zu Out-Default geleitet werden muss, um einen anderen Powershell-Fehler zu vermeiden, der auftritt, weil die Ausgabe einer ausführbaren Datei versucht, in denselben Stream wie das Powershell-Skript zu schreiben, ohne dass Powershell dies bemerkt ( Write-Host: Die Position des Betriebssystem-Handle ist nicht das, was FileStream erwartet.Verwenden Sie kein Handle gleichzeitig in einem FileStream und in Win32-Code oder einem anderen FileStream. Dies kann zu Datenverlust führen. )

In diesem Fall wird also die von der Write-Host-Zeile ausgegebene Zeichenfolge nicht umbrochen, jedoch wird jede von ReportRunner.exe generierte Ausgabe in 80 Zeichen eingeschlossen, und sie tritt nur auf, wenn sie mit dem Task-Scheduler ausgeführt wird! Das gleiche Verhalten tritt auf, wenn Sie den Punkt ändern, an dem die Umleitung stattfindet, dh wenn Sie in der Definition die Aufgabe umleiten (die Befehlszeile der Aufgabe anstelle des Skripts)

Hinweise darauf, warum dies auftreten würde und wie diese Breitenbeschränkung aufgehoben werden kann.

Danke.

    
Zephilim 21.12.2010, 12:22
quelle

2 Antworten

3

Hast du es versucht

? %Vor%     
bernd_k 21.12.2010 13:25
quelle
1

Scripting Guy zur Rettung!

Link: Wie kann ich die Breite der Windows PowerShell-Konsole erweitern

?

Das hat für mich funktioniert:

%Vor%     
Wouter Speybrouck 01.12.2016 15:31
quelle