我已经搜索了很长时间,寻找有关如何在Powershell中使用websocat(https://github.com/vi/websocat)的线索。
我想做的是-尽可能简单!
连接到websocket服务器
发送文本命令
检索服务器响应该特定命令的立即输出
断开与websocket服务器的连接
我试图将其包裹起来以使其尽可能简单。
Write-Output '<command>' | websocat ws://myserver.com | Out-Default
这显然是行不通的,它最好是伪代码,但这是因为我在powershell方面很差。
获得一些如何去做的线索真是太神奇了!
答案 0 :(得分:0)
我不知道什么是websocat,或者曾经有理由去寻找它。但是,这不是您运行外部exe / cmd fom PowerShell的方式。从PowerShell运行exe是一个常见的,有据可查的用例,其中有很多有关整个Web主题的文章。只需搜索即可。在大多数情况下,只需在exe上直接使用call运算符即可。
& 'websocat' 'ws://myserver.com' 'some command(s)'
请参阅以下内容:
PowerShell: Running Executables
Solve Problems with External Command Lines in PowerShell
Top 5 tips for running external commands in Powershell
Using Windows PowerShell to run old command line tools (and their weirdest parameters)
Execution of external commands in PowerShell done right
捕获外部命令的输出,取决于该命令是否支持预期的流以及是否可以使用重定向(请参阅帮助文件)...
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必须提供一种写入文件的方式,以便以后可以读回。同样,在这方面也有很多指南,并且提供预构建脚本/工具来帮助此类事情的人们也有帮助。
示例: Capture output from command line tools with PowerShell
如果有问题的工具需要UI自动化才能工作,那么那就完全不同了。您可以使用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等专门构建的工具。