Войти

Показать полную графическую версию : [решено] Командлет Get-Content непонятно работает


drindous
20-06-2024, 21:57
Привет, пытаюсь вытащить в телегу данные журнала событий через планировщик чтобы быть в курсе входов на удаленку, но текст событий слишком громоздкий.
[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
%0A - это \n (урл-кодированный). Поэтому никаких Delimiter не надо. Нужно урл-кодировать $messageText перед вставкой в строку. $messageText - массив строк без знака перевода строки, поэтому его нужно ещё и join'ить через \n.
Наверное так $messageText = [uri]::EscapeDataString($messageText -join "`n")

drindous
21-06-2024, 07:20
Благодарю за помощь, теперь работает как надо)




© OSzone.net 2001-2012