PS: получить вывод из исполняемого потока (websocat) - PullRequest
0 голосов
/ 18 мая 2019

Я долго искал подсказки о том, как работать с websocat (https://github.com/vi/websocat) в Powershell.

То, что я хочу сделать, это следующее - КАК ПРОСТО, КАК ВОЗМОЖНО!

  1. Подключение к серверу websocket

  2. Отправить текстовую команду

  3. Получение немедленного вывода с сервера, отвечающего на эту конкретную команду

  4. Отключение от сервера веб-сокетов

Я попытался обернуть его вокруг, чтобы сделать его максимально простым.

Write-Output '<command>' | websocat ws://myserver.com | Out-Default

Это, очевидно, не работает, это в лучшем случае псевдокод, но это потому, что я слаб в powershell.

Было бы здорово узнать, как это сделать!

1 Ответ

0 голосов
/ 19 мая 2019

Я понятия не имею, что такое websocat или когда-либо имел причину искать его.Тем не менее, это не то, как вы запускаете внешний exe / cmd для PowerShell.Запуск exe из PowerShell - это распространенный, хорошо документированный сценарий использования с множеством статей на эту тему в Интернете.Нужно просто искать это.В большинстве случаев это просто вопрос использования оператора вызова непосредственно в exe.

& 'websocat' 'ws://myserver.com' 'some command(s)'

См. Следующее:

PowerShell: Запуск исполняемых файлов

Решение проблем с внешними командными строками в PowerShell

Лучшие 5 советов по запуску внешних команд в Powershell

Использование Windows PowerShell длязапускать старые инструменты командной строки (и их самые странные параметры)

Выполнение внешних команд в PowerShell выполнено правильно

Захват вывода из внешней команды зависит от того,команда поддерживает ожидаемые потоки и может использовать перенаправления (см. файлы справки) ...

about_Redirection |Microsoft Docs

# get function / cmdlet details
# (Get-Command -Name about_Redirection).Parameters
Get-help -Name about_Redirection -Full
Get-help -Name about_Redirection -Online
Get-help -Name about_Redirection -Examples

  *>&1      Sends all output types     Test-Output *>> Test-Output.txt
            (*) to the success output  Test-Output *>&1      
            stream.  

  2>&1      Sends errors (2) and       Get-Process none, Powershell 2>&1
            success output (1) 
            to the success 
            output stream.

... или exe должен предоставить способ записи в файл, который вы можете прочитать позже.Опять же, есть много рекомендаций по этому вопросу, и есть люди, которые предоставляют готовые сценарии / инструменты, помогающие с этим типом вещей.

Пример: Захват вывода из инструментов командной строки с помощью PowerShell

Если для работы данного инструмента требуется автоматизация пользовательского интерфейса, то это совсем другое дело.Вы можете использовать метод PowerShell и SendKeys ...

Start-Process -FilePath 'telnet.exe' -ArgumentList 'Some IPA or URL' '-f E:\Temp\Log.txt'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait('Some Command')
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")

... или использовать специальный инструмент, такой как Selenium, AutoIT и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...