$ErrorActionPreference = 'Stop' - это не set -e, что бы ни подсказывало название. Внешняя команда вроде git может выйти с ненулевым кодом, а скрипт спокойно идёт дальше, и код лежит себе в $LASTEXITCODE. Поставьте $PSNativeCommandUseErrorActionPreference = $true, и ненулевой выход станет ошибкой, на которой Stop наконец остановится. По умолчанию там $false, и выяснять это пришлось долго.