Bonjour,
Je travail sur une application en VBNet dont le principe et de lancer des scripts Powershell déjà développés et fonctionnels.
Le but de l'application est de présenter des boutons pour lancer ces scripts.
Pour lancer ces script j'utilise le classique WSCript.shell pour lancer powershell et appeler mon fichier .ps1, comme ceci:
Sauf que le script lance une version de powershell inconnue et bizarre qui est incapable d'executer mon code correctement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim WscriptShell WscriptShell = CreateObject("WSCript.shell") WscriptShell.run("powershell -noexit -file C:\users\myusername\desktop\O365UPN.ps1") End Sub
Ce code implique l'import du module MSonline afin d'effectuer des opération sur office365.
Lorsque j'execute le script depuis le fichier, depuis Powershell ISE sans effectuer le clic droit run as admin, le script fonctionne parfaitement.
Pourtant lorsque c'est le WSCript.shell qui l'appel il lance une version de powershelle qui est incapable d'importer mon module avec l'erreur suivante :
En lisant cela j'ai pensé au module msonline qui ne devait peut etre pas avoir été installé dans tous les repertoires, mais c'est bien le cas, il est bien présent dans mes documents, dans le dossier windows\sys32 et program file, en plus je l'ai installé a la fois depuis l'installeur officiel et aussi depuis la commande install-module, et puis de toute facon il fonctionne parfaitement en powershell autonome et ISE.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Import-Module : Le module «MsOnline» spécifié n'a pas été chargé, car aucun fichier de module valide n'a été trouvé dans un répertoire de module. Au caractère C:\users\myusername\desktop\O365UPN.ps1:7 : 1 + Import-Module MsOnline + ~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (MsOnline:String) [Import-Module], FileNotFoundException + FullyQualifiedErrorId : Modules_ModuleNotFound,Microsoft.PowerShell.Commands.ImportModuleCommand Connect-MsolService : Le terme «Connect-MsolService» n'est pas reconnu comme nom d'applet de commande, fonction, fichier de script ou programme exécutable. Vérifiez l'orthographe du nom, ou si un chemin d'accès existe, vérifiez que le chemin d'accès est correct et réessayez. Au caractère C:\users\myusername\desktop\O365UPN.ps1:8 : 1 + Connect-MsolService -Credential $cred + ~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Connect-MsolService:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
La fenetre restant ouverte après l'erreur je lance manuellement la commande Import-Module MSonline, meme résultat, je remarque meme que la commande Import-Module ne se colore pas en jaune, comme s'il ne connaissait pas cet applet de commande.
Si je lance un powershell depuis n'importe ou ailleurs, il importe le module sans aucune problème.
J'ai deja essayé de lancer powershell dans la commande WSCript.run en donnant le path complet vers le powershell classique, pareil.
J'ai aussi forcé le set-executionpolicyen base de registre, donc ca ne peut pas bloquer de ca.
Auriez-vous une idée de pourquoi le WSCript.shell me lance une version de Powershell complètement inutilisable ?
Ou sinon sivous avez une meilleur méthode de lancer mes scripts ps1 depuis vbs ?
Merci par avance,
Partager