如何重定向或检索由Powershell脚本运行的telnet进程的输出?
我正在运行一个Powershell脚本,该脚本启动一个telnet进程,该进程将在客户端计算机上连接并运行一个命令。客户端机器的操作系统是VxWorks的个性化版本,我在telnet上使用的命令调用机器内部开发的工具:如何重定向或检索由Powershell脚本运行的telnet进程的输出?,powershell,telnet,vxworks,Powershell,Telnet,Vxworks,我正在运行一个Powershell脚本,该脚本启动一个telnet进程,该进程将在客户端计算机上连接并运行一个命令。客户端机器的操作系统是VxWorks的个性化版本,我在telnet上使用的命令调用机器内部开发的工具: mediaGet("gei",1) 我想检索代码的输出并记录它 我尝试在Powershell脚本上使用参数-nonewindow和-RedirectStandardOutput,但它只会创建一个空文件,这意味着它无法检索输出 以下是Powershell脚本: Start-Pro
mediaGet("gei",1)
我想检索代码的输出并记录它
我尝试在Powershell脚本上使用参数-nonewindow和-RedirectStandardOutput,但它只会创建一个空文件,这意味着它无法检索输出
以下是Powershell脚本:
Start-Process -FilePath 'telnet.exe' -ArgumentList '162.100.10.10'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait('mediaGet{(}"gei"{)},1')
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")
(此代码的学分计入此问题的选定答案)
这是代码的输出
mediaGet("gei",1)
> media: 12345
> up: 1000 full duplex
我希望在结尾处有一个包含以下行的文本文件:
media: 12345
up: 1000 full duplex
我怎样才能到达那里?康普特
Yeppers,我错过了在其他问答中回复你的机会。很高兴看到你现在得到了回复
但即使是在文本文件中,您也可以在之后替换它
$TelnetData = @'
mediaGet("gei",1)
> media: 12345
> up: 1000 full duplex
'@
Clear-Host
$TelnetData -replace 'mediaGet|\("gei",1\)|> ', ''
# Results
media: 12345
up: 1000 full duplex
在正常情况下,您也可以在写入文件时执行此操作
然而,在重定向方面,常见的是
MS telnet不使用标准输入/输出
所以,像这样的方法
要重定向telnet会话的输出,可以使用
-f日志文件
…参数,然后在使用完后将其导入变量:
$output=获取内容日志文件
。。。他们经常长大
所以,也许这会让你达到你想去的地方
Start-Process -FilePath 'telnet.exe' -ArgumentList '162.100.10.10', '-f E:\Temp\log.txt'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait('mediaGet{(}"gei"{)},1')
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")
完成上述操作后,您就可以通过
当然,我无法访问IPA you list,我也没有MediaGet功能,但是快速测试一个支持telnet的站点就可以做到这一点
Start-Process -FilePath 'telnet.exe' -ArgumentList 'www.cyberciti.biz 80', '-f E:\Temp\log.txt'
[system.reflection.assembly]::loadwithpartialname("System.Windows.Forms")
$SendKeys = [System.Windows.Forms.SendKeys]
$sendkeys::SendWait("mediaGet'(''gei''',1)'")
Start-Sleep -Seconds .5
$sendkeys::SendWait("{ENTER}")
Start-Sleep -Seconds .5
$sendkeys::SendWait("exit{ENTER}")
# PowerShell Terminal output.
GAC Version Location
--- ------- --------
True v4.0.30319 C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089\System.Windows.Forms.dll
# Telnet Window and text file content
Get-Content -Path 'E:\Temp\log.txt'
HTTP/1.1 400 Bad Request
Server: cloudflaree
Date: Sat, 18 May 2019 08:39:59 GMTi
Content-Type: text/html'Content-Type: text/html'
Connection: close
Connection: close
<html>
<head><title>400 Bad Request</title></head>e
<body bgcolor="white">i
<center><h1>400 Bad Request</h1></center>
<center><h1>400 Bad Request</h1></center>
<hr><center>cloudflare</center>
</body>
</html>
Start Process-FilePath'telnet.exe'-ArgumentList'www.cyberciti.biz 80','-f E:\Temp\log.txt'
[system.reflection.assembly]::loadwithpartialname(“system.Windows.Forms”)
$SendKeys=[System.Windows.Forms.SendKeys]
$sendkeys::SendWait(“mediaGet”(“gei”),1)
开始睡眠-秒
$sendkeys::SendWait(“{ENTER}”)
开始睡眠-秒
$sendkeys::SendWait(“退出{ENTER}”)
#PowerShell终端输出。
GAC版本位置
--- ------- --------
True v4.0.30319 C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0_b77a5c561934e089\System.Windows.Forms.dll
#Telnet窗口和文本文件内容
获取内容-路径“E:\Temp\log.txt”
HTTP/1.1400错误请求
服务器:cloudflaree
日期:2019年5月18日星期六08:39:59 GMTi
内容类型:text/html'Content-Type:text/html'
连接:关闭
连接:关闭
400错误请求
我
400错误请求
400错误请求
云耀斑
不用担心,很高兴它有帮助。