Назад | Перейти на главную страницу

Powershell и долгосрочные внешние инструменты?

Я пытаюсь сжать базу данных 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