Задать вопрос
@Bannana_fish

Как настроить отправку вывода команды в Telegram?

Всем привет! Я новичок в PowerShell и у меня есть следующий код, который должен отправлять список заблокированных пользователей в телеграмм.
$token = "*******"
$chat_id = "********"
$text = Search-ADAccount -LockedOut | Select Name,SamAccountName
$URI = "https://api.telegram.org/bot" + $token + "/sendMessage?chat_id=" + $chat_id + "&text=" + $file
$Request = Invoke-WebRequest -URI ($URI)

Я точно уверен, в том что заблокированные пользователя есть, но при выполнении кода я получаю следующую ошибку:
spoiler
Invoke-WebRequest : {"ok":false,"error_code":400,"description":"Bad Request: message text is empty"}
At line:16 char:12
+ $Request = Invoke-WebRequest -URI ($URI)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest], WebException
+ FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand

Пробовал записать заблокированных пользователей в csv файл и отправить его, но файл даже не заполняется. Использовал: Search-ADAccount -LockedOut | Select Name,SamAccountName | Export-Csv C:\temp\1.csv Get-content -Path C:\temp\1.csv
  • Вопрос задан
  • 205 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ответы на вопрос 4
akelsey
@akelsey
Он же пишет что message text is empty, добавь сообщение в переменную (без пробелов, что б новый вопрос не создавать):
$file="MyMessage"
"&text=" + $file

либо поменяй $file на $text, правда он всё равно не отправит, лучше как я написал выше, для проверки.
Ответ написан
@Bananya
если отправить обычный текст, то проблем не будет
Ответ написан
Комментировать
@MaxKra1985
разработчик java, python
Для отправки файлов у телеграмм есть другой метод.
Если же тебе надо отправить содержимое файла - тогда тебе сначала его надо прочитать.
Ответ написан
Комментировать
@NortheR73
системный инженер
1. API Telegram ожидает от Вас текст, а Вы предлагаете ему массив объектов - потому и ошибка. Передавать надо $text.Name и $text.SamAccountName, причем делать это в цикле
2. В Search-ADAccount надо добавить параметр -UsersOnly - отработает быстрее, т.к. не будет проверять другие типы объектов AD (компьютеры и сервисные учетки)
3. Есть хороший пример
Ответ написан
Ваш ответ на вопрос

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

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