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
Korrekte Ausgabe in Datei: Test.txt:
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
Der erwartete Dateiinhalt in "Test.txt" sollte sein:
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..
Markus
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%
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..
Markus
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 4420548806
Url: https://administrator.de/contentid/4420548806
Ausgedruckt am: 26.11.2024 um 10:11 Uhr
3 Kommentare
Neuester Kommentar
Hi
du schreibst mit
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
stehen oder alternativ
du schreibst mit
$BeginDate = $BeginDate.AddDays(1) | Out-File "Test.txt" -Append
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
($BeginDate = $BeginDate.AddDays(1))| Out-File "Test.txt" -Append
Moin,
Gruß Thomas
Zitat von @SeaStorm:
stehen oder alternativ
oder einfach mit Tee-Object statt mit Out-File arbeitenstehen oder alternativ
($BeginDate = $BeginDate.AddDays(1))| Out-File "Test.txt" -Append
$BeginDate = $BeginDate.AddDays(1) | Tee-Object "Test.txt" -Append
Gruß Thomas