StackOverflowException со слишком большим количеством команд в скрипте? - PullRequest
0 голосов
/ 24 октября 2018

Я создаю сценарий powershell из запроса SQL.Запрос создает список команд, используя команду New-Item.Общее количество команд было около 450 тыс., Все экспортировано в файл .ps1.Я мог успешно выполнить этот сценарий.

Позже я обнаружил, что некоторые команды не сработали, поэтому мне нужно было добавить протоколирование ошибок.Для каждой строки я добавил в конце:

-errorvariable $err; if ($err) {code to write to error log, confirmed working in another script}

Если экспортировать это в .ps1 и выполнить, то получится StackOverflowException, он вообще не запускает никаких команд.Во время устранения неполадок я обнаружил, что если я сократю список команд, скрипт будет работать.Я могу выполнить фрагменты по 62 000 строк, но если я выполню более 62469 строк, я получу исключение.Действительно странная вещь заключается в том, что если я сужусь до точной строки, в которой происходит сбой, я могу сократить последнюю команду до точки, в которой будет выполняться сценарий, а затем добавить еще один символ, и он потерпит неудачу.

Вот пример одной из командных строк:

New-Item -Path "C:\Temp\TestingFolder\TestingSubFolder\F\8F\D42D79CD440CE98D31E9A1353CAA3\6121094601.03.pdf" -Value "F8FD42D79CD440CE98D31E9A1353CAA3` 6121094601.03.pdf" -Type File -Force -errorvariable err
if ($err) {
    Add-Content "C:\Temp\AnalogVaultLog.txt" -Value ("$(Get-Date -format 'u')" + "`r`n" + 'New-Item -Path "C:\Temp\TestingFolder\TestingSubFolder\F\8F\D42D79CD440CE98D31E9A1353CAA3\6121094601.03.pdf" -Value "F8FD42D79CD440CE98D31E9A1353CAA3` 6121094601.03.pdf" -Type File -Force' + "`r`n" + $err + "`r`n") -Force
}

Как я уже сказал, я могу выполнить скрипт длиной 450 тыс., В котором нет вспомогательного оператора журнала ошибок в каждой строке.и это работает, и у этого сценария гораздо больше символов и общих команд, чем из-за неудачного фрагмента строки 62470.Что будет причиной этого исключения?

...