Как вызвать файл PowerShell с параметрами, используя VBScript - PullRequest
0 голосов
/ 03 января 2019

Приветствую всех и поздравляю с Новым годом.

Я только что узнал о PowerShell два дня назад, и это видно.Я пытаюсь сделать пользовательские подсказки Balloon, но не могу сделать отдельные сценарии для ps1 для каждого возможного события.Что мне было нужно, это ps1 с параметрами.

Я нашел этот бит кода на этом сайте: GitHub Invoke-BalloonTip

И я звоню, успешно позвоню с PSокно с:

 . .\Invoke-BalloonTip.ps1
Invoke-BalloonTip -Message 'Message' -Title 'Title' -MessageType Info

Однако мне нужно вызвать это из VBScript.Я пробовал:

Set objShell = CreateObject("Wscript.shell")
objShell.run("powershell -command . c:\PowerShellTest\Invoke-BalloonTip.ps1" & Invoke-BalloonTip -Message 'Invoked' -Title 'Invoked' -MessageType Info)

И

Set objShell = CreateObject("Wscript.shell")
objShell.run("powershell -command ""& { . c:\PowerShellTest\Invoke-BalloonTip.ps1; Invoke-BalloonTip -Message 'Message' -Title 'Title' MessageType Info }""")

и несколько других с неудовлетворительными результатами.Эти два примера являются единственными, которые не показывают ошибок в окне PS при его запуске.С этими двумя примерами окно PS будет отображаться кратко и не отображать никаких сообщений об ошибках, но подсказка Balloon не будет отображаться.

Я уверен, что это проблема синтаксиса, но у меня нет идей относительно того, что это может быть.Любые идеи или предложения приветствуются и приветствуются.

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Ради всех, кто приходит сюда с подобной проблемой, это не будет работать, если в вашем сообщении или заголовке есть пробелы.Чтобы исправить это, я заключил строки в одинарные кавычки:

objShell.run("powershell.exe -command ""& {Add-Type -AssemblyName System.Windows.Forms;. C:\PowerShellTest\Invoke-BalloonTip.ps1; Invoke-BalloonTip -Message ""'Message with Space'"" -Title ""'Title With Space:'"" -MessageType info}""")
0 голосов
/ 03 января 2019

Я думаю, что проблема связана с оригинальным Invoke-BalloonTip.ps1, так как он пытается использовать тип System.Windows.Forms.ToolTipIcon до того, как он станет доступен (через загрузку System.Windows.Forms). Добавление этого ранее в вашу команду должно исправить ситуацию (хотя это выглядит немного странно):

Set objShell = CreateObject("Wscript.shell")
objShell.run("powershell.exe -command ""& {Add-Type -AssemblyName System.Windows.Forms;. C:\PowerShellTest\Invoke-BalloonTip.ps1; Invoke-BalloonTip -Message ""Message"" -Title ""Title"" -MessageType Info}""")

Invoke-BalloonTip.ps1 работает в PowerShell ISE сразу, так как правильная сборка уже загружена по умолчанию, но не в powershell.exe или VSCode.

...