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

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

drindous 20-06-2024 21:57 3028394

Командлет Get-Content непонятно работает
 
Привет, пытаюсь вытащить в телегу данные журнала событий через планировщик чтобы быть в курсе входов на удаленку, но текст событий слишком громоздкий.
Скрытый текст
Код:

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

wevtutil qe Security /q:"* [System[(EventID=4625)]]" /f:text /rd:true /c:1 > C:\test.txt

$botToken = ""
$chatID = ""
$messageText = Get-Content -Path C:\test.txt -TotalCount 48 -Delimiter %0A
$url = "https://api.telegram.org/bot$botToken/sendMessage?chat_id=$chatID&text=$messageText"

Invoke-RestMethod -Uri $url -Method Post


Вся проблема в Get-Content. Изначально я ограничил кол-во строк -TotalCount, но была проблема с тем что в телегу текст прилетал в одну строчку.
Для телеги знак переноса строки это %0A, по этому я использовал -Delimiter, нооо теперь -TotalCount просто перестал работать.

Как их подружить?

Sham 21-06-2024 04:52 3028395

%0A - это \n (урл-кодированный). Поэтому никаких Delimiter не надо. Нужно урл-кодировать $messageText перед вставкой в строку. $messageText - массив строк без знака перевода строки, поэтому его нужно ещё и join'ить через \n.
Наверное так
Код:

$messageText = [uri]::EscapeDataString($messageText -join "`n")

drindous 21-06-2024 07:20 3028397

Благодарю за помощь, теперь работает как надо)


Время: 09:15.

Время: 09:15.
© OSzone.net 2001-