在脚本中有太多命令的StackOverflowException?

时间:2018-10-24 13:17:39

标签: powershell stack-overflow

我正在通过SQL查询创建Powershell脚本。该查询使用New-Item命令创建命令列表。命令总数约为450k,所有命令均导出到.ps1文件中。我可以成功执行此脚本。

我后来发现某些命令失败,因此我需要添加错误日志记录。对于每一行,我在末尾添加:

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

将其导出到.ps1并执行会产生StackOverflowException,它根本不运行任何命令。在故障排除过程中,我发现如果缩短命令列表,该脚本将起作用。我可以执行62k行的块,但是如果我执行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
}

正如我所说,我可以执行一个450k行脚本,该脚本在每行上都没有辅助错误日志语句,并且可以正常工作,并且该脚本具有比62470行代码块更多的字符和整体命令。失败。是什么导致此异常?

0 个答案:

没有答案