Hallo Pet7,
ich fasse mal zusammen:
Du startest aus einem Batchfile heraus ein Powershell Skript. In dem PS Skript führst Du Befehle aus, z.B. kopieren, die evtl. schief gehen können. In Abhängigkeit dessen willst Du in Deinem Batchfile mit Hilfe von %errorlevel% darauf reagieren.
CMD Test-Batch "test.bat" (wie in dem Link von cybquest beschrieben):
@echo off
powershell -noprofile -command "& {"d:\Test\test.ps1"; exit $Lastexitcode}"
echo Rueckgabewert: %errorlevel%
Powershell Test-Skript "test.ps1":
$ErrorActionPreference = 'Stop'
trap {
"Ein Fehler ist passiert"
exit 5
}
Copy-Item 'C:\Temp\gibtsnicht.txt' 'c:\Temp\a'
Die Variable $ErrorActionPreference muss auf Stop gestellt werden damit der Fehler nicht von cmdlet selbst sondern von der Trap behandelt wird. Das gilt dann für alle cmdlets. Alternativ kannst du beim jeweiligen cmdlet auch den Parameter -Erroraction 'stop' anhängen.
In der Trap wird das Skript mit dem Exitcode, im Beispiel 5, verlassen.
Hoffe das hilft Dir
Gruß
Bernd