@Mitya78
Инженер АСУТП

Вызов VBS из другого скрипта с передачей текстовой переменной — как?

Есть у меня vbs-скрипт, выполняемый на ПК (Windows) который отравляет сообщение в Телеграм.
Сам по себе он работает, всё нормально.

Но мне надо отправлять сообщения из СКАДА, с разным текстом.
Как понимаю, мне надо вызвать из скрипта в СКАДА скрипт на ПК, с входным текстовым параметром.

Вот скрипт в СКАДА:
Dim obj
  Dim txtMsg
  txtMsg = "Example"
  Set obj = CreateObject("Wscript.Shell")
  obj.Run "D:\telegaMSG1.vbs txtMsg"


Вот на ПК:
sAPI_ID = "604"

sChat_ID = "-100"


sMSG = Wscript.Arguments.Item(0)

sUrl = "https://api.telegram.org/bot" & sAPI_ID & "/sendMessage"

sRequest = "text=" & sMSG & "&chat_id=" & sChat_ID

HTTPPost sUrl, sRequest

Function HTTPPost(sUrl, sRequest)
set oHTTP = CreateObject("Microsoft.XMLHTTP")
oHTTP.open "POST", sUrl,false
oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
oHTTP.setRequestHeader "Content-Length", Len(sRequest)
oHTTP.send sRequest
HTTPPost = oHTTP.responseText

End Function


Но только отправляется не "Example", а имя переменной в СКАДА "txtMsg"

Подскажите, где ошибка, что исправить?
  • Вопрос задан
  • 219 просмотров
Пригласить эксперта
Ответы на вопрос 1
@rPman
у тебя следующие варианты:
- передать в параметрах, заключив текст в ковычки и проследив чтобы этих ковычек не было в тексте (так же не было миволов новой строки и еще кучи других, скорее всего управляющих, других кодировок и т.п.)
- сериализовать сообщение (преобразовать в другую строку) так чтобы в нем не было 'опасных' символов, к примеру самый простой это hex encoding
Есть еще лимит на длину строки, но там на выбор 256, 4096, 16к,... смотря как WScript.Shell это реализует
- НАИЛУЧШИЙ, сохранить строку в файле, передать его имя в качестве аргументов и прочитать его уже в vbs

p.s. Wscript.Arguments.Item(0) не 0 а 1, нулевой элемент имя запускаемой программы/скрипта
моя ошибка
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы