0
votes

Comment appeler un fichier PowerShell avec des paramètres à l'aide de VBScript

Salutations Tout le monde et bonne année.

Je viens d'apprendre à propos de PowerShell il y a deux jours et cela montre. J'essaie de faire des conseils de ballon personnalisés et de ne pas faire de scripts PS1 distincts pour chaque événement possible. Ce dont j'avais besoin était un PS1 avec des paramètres.

J'ai trouvé ce bit de code sur ce site: GITUB INVOKE-BallOonTip

Et j'appelle l'appelez avec succès à partir de la fenêtre PS avec: xxx

Cependant, j'ai besoin d'appeler ceci à partir d'un VBScript. J'ai essayé: xxx

et xxx

et quelques autres avec des résultats insatisfaisants. Ces deux exemples sont les seuls qui ne montrent aucune erreur dans la fenêtre PS lorsqu'elle fonctionne. Avec ces deux exemples, la fenêtre PS affichera brièvement et n'indique pas de messages d'erreur, mais aucune pointe de ballon s'affiche.

Je suis certain que c'est une question de syntaxe, mais je suis à court d'idées sur ce que cela pourrait être. Toute idées ou suggestions sont les bienvenues et appréciées.


2 commentaires

Préparez les arguments -Command avec -NOexit pour que la fenêtre reste ouverte afin que vous puissiez voir des erreurs qui pourraient lancer: "PowerShell -Noexit -Command" ". .. "


Merci pour ça, je garderai ça à l'esprit


3 Réponses :


1
votes

Je pense que le problème est avec l'original invoke-balloontep.ps1 car il essaie d'utiliser le type system.windows.forms.tooltipicon Type avant qu'il soit disponible (via Chargement System.Windows.Forms ). L'ajout plus tôt dans votre commande devrait corriger les choses (bien qu'elle semble un peu haçonneuse): xxx

invoke-balloontip.ps1 fonctionne immédiatement dans le PowerShell Ise Comme l'assemblage correct est déjà chargé par défaut, mais pas dans PowerShell.exe ou vscode .


1 commentaires

Vous êtes monsieur (madame?) Sont un génie! Cela fonctionnait parfaitement et j'apprécie vraiment l'explication. Maintenant sur le prochain numéro!



0
votes

Pour le bien de quelqu'un d'autre qui vient ici avec un problème similaire, cela ne fonctionnera pas s'il y a des espaces dans votre message ou votre titre. Pour le réparer, j'ai entouré les cordes avec des guillemets simples: xxx


0 commentaires

0
votes

Vous pouvez utiliser ce code.

Dim strTitle, srtContext, strCommang

strTitle = "Title"
srtContext = "Text"

strCommang =    "powershell.exe -executionpolicy bypass -command " & _
                "[reflection.assembly]::loadwithpartialname('System.Windows.Forms')" & vbNewLine & _
                "[reflection.assembly]::loadwithpartialname('System.Drawing')" & vbNewLine & _
                "$notify = new-object system.windows.forms.notifyicon" & vbNewLine & _
                "$notify.icon = [System.Drawing.SystemIcons]::Information" & vbNewLine & _
                "$notify.visible = $true" & vbNewLine & _
                "$notify.showballoontip(10,'" & strTitle & "','" & srtContext & "',[system.windows.forms.tooltipicon]::None)"

Set objShell = CreateObject("Wscript.shell")
objShell.Run strCommang, 0
Set objShell = Nothing


1 commentaires

Peut vouloir utiliser VBCRLF au lieu de VBNewline. Promotic.eu/fr/pmdoc/scriptLangs/vbscript/ConSt.htm < / a>