1 votes

Powershell et outils externes à long terme ?

J'essaie de compacter une base de données MS-Access à l'aide de JetComp.exe en utilisant un script powershell.

Voici les lignes opérationnelles :

# 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")

Le programme JETCOMP.EXE semble se terminer bien avant qu'il ne soit réellement terminé et la $dstDB finit par être plus petite que ce que le compact devrait même faire. Initialement ($srcDB), il est d'environ 1,8 Go et au moment où la commande se termine, il est d'environ 300 000 kb (environ 0,29 gb), ce qui est assez loin de 1,8 gb qui, lorsqu'il est compacté manuellement, finit par être d'environ 1,6 gb.

Y a-t-il une sorte de délai que je ne connais pas dans les scripts de powershell ?

P.S. Je sais que lorsque vous exécutez JETCOMP.EXE manuellement, le système le détecte souvent comme "ne répondant pas", même s'il est en train de faire son travail, et qu'une attente suffisamment longue lui permettra de le terminer.

0 votes

Ok, peut-être que le & fait la même chose en powershell qu'en cmd. :(

2voto

sysadmin1138 Points 129885

Ce chiffre est étonnamment proche de deux fois la limite de 150 Mo de mémoire de Remote Powershell. Si c'est effectivement votre problème, il est possible que JETCOMP n'obtienne pas assez de RAM pour faire ce qu'il doit faire et échoue discrètement. Si vous exécutez ce programme via Remote-PS, vous pouvez vérifier les limites de la manière suivante :

Get-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB

Et pour les fixer :

Set-Item WSMan:\localhost\Shell\MaxMemoryPerShellMB 1024

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X