Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何重定向或检索由Powershell脚本运行的telnet进程的输出?_Powershell_Telnet_Vxworks - Fatal编程技术网

如何重定向或检索由Powershell脚本运行的telnet进程的输出?

如何重定向或检索由Powershell脚本运行的telnet进程的输出?,powershell,telnet,vxworks,Powershell,Telnet,Vxworks,我正在运行一个Powershell脚本,该脚本启动一个telnet进程,该进程将在客户端计算机上连接并运行一个命令。客户端机器的操作系统是VxWorks的个性化版本,我在telnet上使用的命令调用机器内部开发的工具: mediaGet("gei",1) 我想检索代码的输出并记录它 我尝试在Powershell脚本上使用参数-nonewindow和-RedirectStandardOutput,但它只会创建一个空文件,这意味着它无法检索输出 以下是Powershell脚本: Start-Pro

我正在运行一个Powershell脚本,该脚本启动一个telnet进程,该进程将在客户端计算机上连接并运行一个命令。客户端机器的操作系统是VxWorks的个性化版本,我在telnet上使用的命令调用机器内部开发的工具:

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错误请求

云耀斑
不用担心,很高兴它有帮助。