IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

VB.Net problème avec script powershell externe et modules


Sujet :

VB.NET

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Par défaut VB.Net problème avec script powershell externe et modules
    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:

    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
    Sauf que le script lance une version de powershell inconnue et bizarre qui est incapable d'executer mon code correctement.
    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 :
    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
    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.
    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,

  2. #2
    Nouveau candidat au Club
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Octobre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Octobre 2018
    Messages : 2
    Par défaut
    Après avoir effectué d'autres test il semblerait que dès que je tente d'appeler powershell depuis une autre app genre CMD, ca lance un powershell qui n'a accès a aucun applet de commande.


    J'ai par exemple fait un petit WIN+R et lancé "cmd /c powershell -noexit -file "mon fichier"", pareil. J'ai aussi simplement lancé "cmd /c powershell -noexit", puis depuis la fenetre de commande j'a tenté un "import-module MSonline", pareil.
    J'ai meme refait un script pour lancer une cmd en tant qu'admin qui ensuite lance le script powershell en bypass executionpolicy, pareil....

  3. #3
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    Pourquoi ne pas enregistrer un fichier avec les lignes de tes commandes DOS ou PowerShell, et lui donner l'extension .BAT ?
    Ce fichier de commandes peut alors être exécuté de différentes manières, comme tout exécutable.
    En programmation VB :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    Shell("D:\Tmp\CopieFichier\BatchFile.Bat")
    'ou 
                    Process.Start("D:\Tmp\CopieFichier\BatchFile.Bat")
    Pour cet exemple, le fichier BatchFile.Bat contient la ligne suivante : RENAME D:\Tmp\VieuxFichier.TXT AEffacer.TXT

    Attention que certaines instructions PowerShell doivent être exécutées en tant qu'Administrateur, c'est peut-être aussi le cas de ton script ?

    L'écriture d'un fichier de commandes te donnes la possibilité de le tester en fenêtre Dos ou dans l'Explorateur de Windows.

    A propos de Start :

    Process.Start("x:\MesFichiers.Bat") ' Aucune attente
    Process.Start("x:\MesFichiers.Bat").WaitForExit(t) ' Attente de t millisecondes ou illimitée si t absent

    J'espère que ceci t'inspirera ...

Discussions similaires

  1. problème avec script d'upload : variables indéfinies
    Par wilikev dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 17/10/2007, 12h26
  2. [SQL] Problème avec script de pagination et requête sql sur deux tables
    Par psychoBob dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 12/06/2006, 14h06
  3. Problème avec l'utilisation d'un module
    Par goblin dans le forum Modules
    Réponses: 4
    Dernier message: 09/11/2005, 20h55
  4. [MS-DOS] Problème avec Script
    Par bliml dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 24/05/2005, 13h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo