Question Creation fichier excel avec tache planifier

Plus d'informations
il y a 5 ans 7 mois #28258 par Prades
Hello,
Bien que cela face un moment que je développe en powershell je me trouve face un truc tout simple et évident .... mais qui ne fonctionne pas.
Pour résumer de façon très simple.
Je créer un fichier excel avec un graphique avec cette méthode.

[code:1]
$excel = new-object -comobject Excel.Application
$workbook = $excel.Workbooks.Add()
$excel.visible = $true
$excel.DisplayAlerts = $False
$workbook = $workbook.Worksheets.Item(1)
[/code:1]
La suite et classique pour remplir le tableau mais pour le moment ce n'est pas important je pense.

En tous cas quand je lance avec mon compte, ou avec celuis prévu pour cela fonctionne et j'ai un beau excel avec un beau graphique dont les commande ne sont pas ici.
Par contre. Si je lance avec les même comptes ça plante.
On dirait que à ça plante a la première ou a la deuxième ligne.

message d'erreur:
exception calling add with \"0\" argument(s) microsoft excel cannot open or save anymore documents because there is not enough available memory or disk space

ensuite ca me dit comment faire de la place et ou.

\"to make more memory available close workbooks or programs you no longer need\"
et
\"to free disk space delete files you no longer need from the disk you are saving to puis mon chemin de script.\"


Meme sur le net , je n'ai trouvé que 2 dossier desktop a ajouter mais ca ne suffit pas.

Une idée ?
PS je rappelle que en console ça fonctionne.

Message édité par: T800, à: 19/02/19 17:38<br><br>Message édité par: Arnaud, à: 20/02/19 09:46

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 7 mois #28261 par Arnaud Petitjean
Hello T800 !

Est-ce que ton problème ne surviendrait pas parce que tu as trop d'instances d'Excel de démarrées simultanément ?

En effet, à chaque fois que tu fais un New-Object c'est comme si tu lançais Excel et comme tu ne tues jamais ton processus (sauf si tu fermes ta console PowerShell) ça peut potentiellement bien charger ta mémoire.

Que veux-tu dire par \&quot;en console ça fonctionne.\&quot; ?

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 7 mois #28271 par Prades
Hello
Je voulais aussi préciser que c'est ici que j'ai commencer le powershell sous le pseudo sonic31 début 2008 ... quand je relis mon script de l’époque je pense pouvoir le réduire ... disons diviser par 10 au moins.

Bref:

Je ne pense pas que ce soit un problème du nombre d'instance excel vue que je n'en lance qu'une.
Quand je dis en console cela veux dire avec l'interface powerhelle ISE ou la normale. Avec les 2 comptes cela fonctionne. Il n'y a que avec une tache planifier que j'ai ce message d'erreur et le plantage. La solution trouvé sur le net (ajouter les 2 répertoire desktop) ne fonctionne pas pour tout le monde comme j'ai pu le lire et j'en fait partie. Par contre je serait bien étonné que personne n'y arrive tellement ça me parait une chose souvent utiliséet utile.
Cette après midi je poste l'erreur en entière.
Peut être que je vais essayé en chargeant puis en modifiant un fichier excel qui servirait de base ? Je trouve la moins propre mais bon.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 7 mois #28272 par Arnaud Petitjean
Si tu as perdu ton mot de passe pour Sonic31, je peux te le réinitialiser ?

Avec quel compte fais-tu tourner ta tâche planifiée ?

Est-ce un compte utilisateur lambda créé à cet effet ou le compte System ? Peut-être qu'on ne peut pas instancier Excel depuis le compte System ?

Pour info, il faut toujours tester ton script avec la console PowerShell classique; c'est le juge de paix. Méfie toi de ISE comme de la peste ! ;)

Je ne comprends rien à ton histoire de fichiers Desktop. Peut-être pourrais-tu être plus explicite ?

Merci

Arnaud

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 7 mois #28278 par Prades
Pour le compte sonic31 oui pourquoi pas mais si je ne l'ai pas fait c'est que j'ai même perdu l'adresse mail il me semble, ça fait plus de 10 ans ! Remplacer par mon mail actuel si c'est possible serait bien.

C'est 2 comptes de de l'AD, je les ais même mis admin de la machine au cas ou. J'ai tester les 2 ISE et la console classique. Cela fonctionne avec les 2 consoles et les 2 compte. Ça plante que en tache planifié.

Ca va être dur d'être clair en parlant des choses dans le même message:

$objexcel = new-object -comobject Excel.Application -verbose
VERBOSE: Verification que excel a bien été lancé contenu de $objexcel
\&quot;Microsoft.Office.Interop.Excel.ApplicationClass\&quot; from the component's primary interoperability assembly. If this type exposes different members than the IDispatch members, scripts that are written to work with this object might not work if the primary interoperability assembly is not installed.

l'erreur arrive de suite a la commande :
finalworkbook = $objexcel.worksheets.item(1)
Cela donne le résultat ci dessous:

Exception calling \&quot;Add\&quot; with \&quot;0\&quot; argument(s): \&quot;Microsoft Excel cannot open or
save any more documents because there is not enough available memory or disk
space.

• To make more memory available, close workbooks or programs you no longer
need.

• To free disk space, delete files you no longer need from the disk you are
saving to.\&quot;
At D:\Scripts\IISlogsReports\IISlogsreportxxxxxxxx.ps1:62 char:1
+ $finalworkbook = $objexcel.workbooks.add() # creer fichier
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : ComMethodTargetInvocation

VERBOSE: Fichier Excel créé ou pas
You cannot call a method on a null-valued expression.
At D:\Scripts\IISlogsReports\IISlogsreportxxxxxxxx.ps1:64 char:1
+ $finalworksheet = $finalworkbook.worksheets.item(1) # choisir onglet
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull


La fameuse solution de dossier descktop que je trouve souvent sur le net comme par exemple sur social.technet.microsoft.com/forums/wind...sks-wont-start-excel

serait comme ils disent de créer les dossiers :

\&quot;You have to create a folder (or two on a 64bit-windows):

(32Bit, always)

C:\Windows\System32\config\systemprofile\Dektop

(64Bit)

C:\Windows\SysWOW64\config\systemprofile\Desktop

I have had the same problem and this was the only solution i have found.\&quot;

Ou alors j'ai mal compris , de toute façon ça ne fonctionne pas.
PS: il y a une faute a la première ligne, bien sur c'est bien desktop. Je la laisse car elle est comme ça sur plusieurs site la ou d'autre l'ont corrigé.

Pour tout résumer au plus simple.
Je veux créer un ficher excel avec un graphique (donc pas de CSV) et automatiquement avec une tache planifié. Ça fonctionne très bien en ISE ou en console classique, je le reçois tout prêt avec le graphique par mail mais jamais en tache planifier avec les même script. Apres je ne suis pas fermé sur la solution mais cela me parait tellement pratique pour d'autre cas que j'aimerai trouver la solution.<br><br>Message édité par: T800, à: 20/02/19 14:59

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 5 ans 7 mois #28279 par Arnaud Petitjean
Ok c'est beaucoup plus clair pour moi maintenant. Merci pour ces explications.

A mon avis ton problème doit venir de la configuration de ta tâche planifiée.

Dans les versions plus anciennes de Windows, il y a avait une option qui a disparu qui était \&quot;autoriser la tâche à intéragir avec le bureau\&quot;.

Ca ne s'appelle plus comme ça aujourd'hui mais je suis persuadé que cette option aurait pu résoudre ton problème.

En résumé, j'essaierai de jouer avec les différentes cases à cocher qui te sont proposées dans l'onglet Général de ta tâche planifiée.

Arnaud
PS : Au feeling j'essaierai bien celle qui s'appelle : \&quot;Do not store password. The task will only have access to local computer resources.\&quot;

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.112 secondes
Propulsé par Kunena