Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] CMD батник в PS1 (http://forum.oszone.net/showthread.php?t=346862)

Skylear 28-10-2020 18:14 2937927

CMD батник в PS1
 
Добрый день коллеги. Имеем не совсем стандартную задачу, помогите разобраться. Есть программа (конкретно 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 2937932

изменил скрипт теперь в итоге в батнике аргументы передаются в скрипт 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 2937934

коллеги решил вопрос, может кому пригодится.
в строке батника аргументы перечисляются так:
Код:

powershell  -file D:\Telegram\ps2s.ps1 %1 %2 %3 %4
после этого из программы начинают работать указанные там аргументы


Время: 23:37.

Время: 23:37.
© OSzone.net 2001-