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

  1. #1
    Membre à l'essai
    Transmettre en VBA un tableau de String à un script Powershell
    Bonjour,

    J'ai écris un script Powershell qui prends en entrée les type de paramètres un String et un Tableau de String.

    Code PowerShell :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    param( 	
     
         [string[]]$Param1,
         [string]$Param2,
    )


    Ce script fonctionne parfaitement depuis longtemps.

    Mais pour faciliter la vie des utilisateurs , j'ai créé avec Visual Studio Community une interface graphique (en VBA) et c'est là que je commence à nager la brasse couler.
    J'ai un petit souci pour transmettre "param1" qui est un tableau de String.

    Comment transmettre au script Powershell un Paramètre reconnu comme un tableau de string à partir de l'interface graphique en VBA ????

    La commande que je lance en VBA est :

    Code PowerShell :Sélectionner tout -Visualiser dans une fenêtre à part
    Commande = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy unrestricted  -file " & TextBox4.Text & " -Param2" & ComboBox1.Text & "  -Param1" & TextBox1.Text




    Par avance merci de votre aide....

  2. #2
    Membre habitué
    Bonjour,

    Mais il me semble que c'est pas possible de lui passer un objet "Tableau" en arguments, il lui faut le contenu du tableau et non la forme objet
    mais je peux me tromper

  3. #3
    Expert confirmé
    Formate ton param1 comme ceci

    Code PowerShell :Sélectionner tout -Visualiser dans une fenêtre à part
    @("aa", "bb", "cc")

  4. #4
    Membre à l'essai
    Bonjour,

    Je passe bien un paramètre sous cette forme @("aa", "bb", "cc") en VBA, mais elle n'est pas correctement interprété coté PowerShell, elle est interprétée comme un String.

    Interprétation en ligne de commande :


    Interprétation via l'interface VBA :


  5. #5
    Expert confirmé
    Après avoir réalisé un test, tu as raison.

    Ça fonctionne comme ceci chez moi :
    Code batch :Sélectionner tout -Visualiser dans une fenêtre à part
    "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Unrestricted -Command "C:\dossieravecun` espace\test.ps1 -Param1 @('toto', 'tata')"

  6. #6
    Membre à l'essai
    Merci d'avoir corrigé mon erreur

    Effectivement dans ma commande vba, quand je remplace "-file" par "-command" cela fonctionne très bien. Encore une fois merci


    Code VBA :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ' Mauvaise Commande  : 
    'Commande = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy unrestricted  -file " & TextBox4.Text & "  -vm " & TextBox1.Text & " -finalisation " & Finalisation
     
    ' Bonne Commande  : 
    Commande = "C : \Windows\System32\WindowsPowerShell\v1.0\powershell.exe - ExecutionPolicy unrestricted  -Command " & TextBox4.Text & " -vm " & TextBox1.Text & " -finalisation" & Finalisation
     
     
    Shell(Commande)






###raw>template_hook.ano_emploi###