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-ID: 4420548806

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

Ausgedruckt am: 26.11.2024 um 10:11 Uhr

SeaStorm
Lösung SeaStorm 27.10.2022 aktualisiert um 15:54:30 Uhr
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  
TK1987
Lösung TK1987 27.10.2022 aktualisiert um 16:12:12 Uhr
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
makroll10
Lösung makroll10 27.10.2022 um 17:24:46 Uhr
Goto Top
Hallo,

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

Gruß Markus