Войти

Показать полную графическую версию : [решено] CMD батник в PS1


Skylear
28-10-2020, 18:14
Добрый день коллеги. Имеем не совсем стандартную задачу, помогите разобраться. Есть программа (конкретно RdpGuard 6.7). Там есть функция уведомления. Нужно заставить приходить уведомления в телеграм.
модель работы такая:
в программе происходит вызов bat, ниже написаны аргументы (самой программы) типа ip-blocked %IP% %USER% %PROTOCOL%. вот именно эти аргументы нужно передать в PS1 скрипт
содержание батника такое:
powershell -file D:\Telegram\ps2s.ps1
содержание скрипта ps такое:
param(
[string]$chat_id = $("-XXXXXXXXXX"),
[string]$text = $("ip-blocked %IP% %USER% %PROTOCOL%"),
[switch]$markdown,
[switch]$nopreview
)
$token = "XXXXXXXXX:99999999999XXXXXXXXXXXXXX00000000000"
if($nopreview) { $preview_mode = "True" }
if($markdown) { $markdown_mode = "Markdown" } else {$markdown_mode = ""}

$payload = @{
"chat_id" = $chat_id;
"text" = $text
"parse_mode" = $markdown_mode;
"disable_web_page_preview" = $preview_mode;
}

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
Invoke-WebRequest `
-Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $token) `
-Method Post `
-ContentType "application/json;charset=utf-8" `
-Body (ConvertTo-Json -Compress -InputObject $payload)

В итоге программа срабатывает, но в телеграм прилетает сообщение просто со словами:
ip-blocked %IP% %USER% %PROTOCOL%
переменные не отрабатывают.
подскажите как реализовать

Skylear
28-10-2020, 18:42
изменил скрипт теперь в итоге в батнике аргументы передаются в скрипт ps1, а вот из проги не могу передать...
powershell -file D:\Telegram\ps2s.ps1 1 2 3 4

param($p1, $p2, $p3, $p4,
[string]$chat_id = $("-XXXXXXXXXX"),
[string]$text = $("$p1, $p2, $p3, $p4"),
[switch]$markdown,
[switch]$nopreview
)
$Script:args=""
write-host "Num Args: " $PSBoundParameters.Keys.Count
foreach ($key in $PSBoundParameters.keys) {
$Script:args+= "`$$key=" + $PSBoundParameters["$key"] + " "
}
write-host $Script:args
$token = "XXXXXXXXX:99999999999XXXXXXXXXXXXXX00000000000"
if($nopreview) { $preview_mode = "True" }
if($markdown) { $markdown_mode = "Markdown" } else {$markdown_mode = ""}

$payload = @{
"chat_id" = $chat_id;
"text" = $text
"parse_mode" = $markdown_mode;
"disable_web_page_preview" = $preview_mode;
}

[Net.ServicePointManager]::SecurityProtocol = "tls12, tls11, tls"
Invoke-WebRequest `
-Uri ("https://api.telegram.org/bot{0}/sendMessage" -f $token) `
-Method Post `
-ContentType "application/json;charset=utf-8" `
-Body (ConvertTo-Json -Compress -InputObject $payload)

Skylear
28-10-2020, 19:06
коллеги решил вопрос, может кому пригодится.
в строке батника аргументы перечисляются так:
powershell -file D:\Telegram\ps2s.ps1 %1 %2 %3 %4
после этого из программы начинают работать указанные там аргументы




© OSzone.net 2001-2012