makroll10
Goto Top

Powershell Fehlermeldung bei While-Schleife

Hallo,

ich möchte gerne einige Batch-Aufrufe auf einen Aufruf per Powershell umstellen und bekomme die u.a. Fehlermeldung:

Beispiel (Batch): Programmaufruf mit 2 Parametern

Aufruf: Test.bat 01 05

set von=%1
set bis=%2
set "datei_out=Test.txt"  

for /L %%i in (%von%,1,%bis%) do echo %%i>>%datei_out%
Korrekte Ausgabe in Datei: Test.txt:
1
2
3
4
5


Versuch der Lösung mit Powershell:

Es sollen im Gegensatz zum o.a. Beispiel nicht nur Zahlen, sondern direkt das lfd. Datum (was Powershell ja kann) ermittelt, in eine Datei geschrieben werden bzw. auch später als Programm-Parameter verwendet werden.

Aufruf: Test.ps1 01.10.22 05.10.22

param(
    [Parameter()]
    [String]$vonDatum,
    [String]$bisDatum
)

$BeginDate = Get-Date $vonDatum
$EndDate = (Get-Date $bisDatum).AddDays(1)

While($BeginDate -lt $EndDate) {
    $BeginDate.ToString("dd.MM.yy")  
    $BeginDate = $BeginDate.AddDays(1) | Out-File "Test.txt" -Append  

}

Der erwartete Dateiinhalt in "Test.txt" sollte sein:
01.10.22
02.10.22
03.10.22
04.10.22
05.10.22

Leider erzeugt der Aufruf stattdessen die folgende Fehlermeldung:
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.


Vielleicht hat ja jemand einen Tipp für mich. Vielen Dank schon mal.. face-wink

Markus

Content-Key: 4420548806

Url: https://administrator.de/contentid/4420548806

Printed on: May 7, 2024 at 01:05 o'clock

Member: SeaStorm
Solution SeaStorm Oct 27, 2022 updated at 13:54:30 (UTC)
Goto Top
Hi

du schreibst mit
$BeginDate = $BeginDate.AddDays(1) | Out-File "Test.txt" -Append  
den Output von Out-File in $BeginDate . Und der Output ist ... Nichts.
Deshalb schreibt er auch einmalig das Datum in die Datei und ab dann hagelt es Fehler.
Denn in der nächsten Iteration ist BeginDate leer und da versuchst du einen Tag anzufügen. Geht halt nicht.

Da muss also
$BeginDate = $BeginDate.AddDays(1) 
$BeginDate | Out-File "Test.txt" -Append  
stehen oder alternativ
($BeginDate = $BeginDate.AddDays(1))| Out-File "Test.txt" -Append  
Member: TK1987
Solution TK1987 Oct 27, 2022 updated at 14:12:12 (UTC)
Goto Top
Moin,

Zitat von @SeaStorm:
stehen oder alternativ
($BeginDate = $BeginDate.AddDays(1))| Out-File "Test.txt" -Append  
oder einfach mit Tee-Object statt mit Out-File arbeiten
$BeginDate = $BeginDate.AddDays(1) | Tee-Object "Test.txt" -Append  

Gruß Thomas
Member: makroll10
Solution makroll10 Oct 27, 2022 at 15:24:46 (UTC)
Goto Top
Hallo,

vielen Dank für die Lösungen.... Funktioniert tadellos, so wie es soll....

Gruß Markus