J'ai un problème où j'ai automatisé la création d'un objet COM Excel.Application, ajouté des données dans un classeur, puis enregistré le document au format xlsx.
Cela fonctionne bien si :
- Je suis déjà dans l'hôte interactif de Powershell et je lance chaque commande en séquence, ou je l'exécute comme un ps1.
- Je l'exécute depuis cmd.exe, en utilisant la syntaxe : powershell.exe -command "c : \path\to\powershellscript.ps1 "
- Je crée une tâche planifiée dans Windows 7 / Server 2008 R2, j'utilise le fichier powershell.exe -syntaxe de la commande, et utiliser le mode "Exécuter uniquement lorsque l'utilisateur est connecté".
Il échoue lorsque je modifie la même tâche programmée, mais en la fixant à " s'exécute que l'utilisateur soit connecté ou non ".
Voici un exemple de script qui illustre le problème que je rencontre :
$Excel = New-Object -Com Excel.Application
$Excelworkbook = $Excel.Workbooks.Add()
$excelworkbook.saveas("C:\temp\test.xlsx")
$excelworkbook.close()
J'ai une théorie selon laquelle l'objet COM échoue d'une manière ou d'une autre si mon profil n'est pas chargé / s'il n'est pas exécuté dans une fenêtre de commande.
Avez-vous des idées sur les options à choisir lors de la création de la tâche planifiée, ou sur les options à utiliser lors de la création de l'objet Excel ou de l'utilisation de la fonction SaveAs() ? Quelqu'un peut-il reproduire ce problème ? J'ai pu observer ce comportement sur une machine Server 2008 R2 et sur Windows 7. Je n'ai pas essayé d'autres plateformes.
0 votes
Did you solve your problem ? <br>J'ai le même problème ici avec VBS, et c'est vraiment ennuyeux.... La manipulation du classeur Excel fonctionne très bien mais l'enregistrement échoue !