Я пытаюсь сжать базу данных MS-Access с помощью JetComp.exe с помощью сценария PowerShell.
Вот оперативные линии:
# 4. Run JetComp
LogWrite("Begin: Running JetComp")
.\JETCOMP.EXE -src: $srcDB -dest: $dstDB | Out-Null #Run this command and wait for it to finish...
IfErrorExit("Error Compacting Database")
LogWrite("End: Running JetComp")
Кажется, что программа JETCOMP.EXE завершается задолго до своего фактического завершения, и $ dstDB оказывается меньше, чем должна быть компактная база данных. Первоначально ($ srcDB) это около 1,8 ГБ, а к моменту завершения команды это около 300000 КБ (около 0,29 ГБ), что довольно далеко от 1,8 ГБ, которые при сжатии вручную заканчиваются примерно 1,6 ГБ.
Есть ли какой-то тайм-аут, о котором я не знаю в сценариях PowerShell?
P.S. Я знаю, что при запуске JETCOMP.EXE вручную система часто определяет его как «не отвечающий», даже если он действительно выполняет работу, и достаточно долгое ожидание позволит ей завершить.
Это число подозрительно близко к двукратному пределу памяти Remote Powershell в 150 МБ. Если это действительно ваша проблема, возможно, JETCOMP не получает достаточно оперативной памяти, чтобы делать то, что ему нужно, и тихо выходит из строя. Если вы запускаете это через удаленный PS, вы можете проверить ограничения следующим образом:
Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB
И установить их:
Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024