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 plink telnet命令输出到var_Powershell_Ssh_Scripting_Telnet_Plink - Fatal编程技术网

Powershell plink telnet命令输出到var

Powershell plink telnet命令输出到var,powershell,ssh,scripting,telnet,plink,Powershell,Ssh,Scripting,Telnet,Plink,我正在尝试使用powershell和plink为某些telnet/ssh命令执行编写一个脚本(基于一些internet示例)。但我想实现的主要功能是将此命令的输出捕获到变量或文本文件中。如何截取特定命令的输出 例如:当我发送“获取状态”命令时,它返回“状态为01 02 03”。我可以将此字符串分配给var或文本文件吗?也许,只有“01 02 03”没有“状态”文本 $ps=新对象-TypeName System.Diagnostics.Process $ps.StartInfo.UseShell

我正在尝试使用powershell和plink为某些telnet/ssh命令执行编写一个脚本(基于一些internet示例)。但我想实现的主要功能是将此命令的输出捕获到变量或文本文件中。如何截取特定命令的输出

例如:当我发送“获取状态”命令时,它返回“状态为01 02 03”。我可以将此字符串分配给var或文本文件吗?也许,只有“01 02 03”没有“状态”文本

$ps=新对象-TypeName System.Diagnostics.Process
$ps.StartInfo.UseShellExecute=$false
$ps.StartInfo.RedirectStandardInput=$true
$ps.StartInfo.FileName=“plink”
$ps.StartInfo.Arguments=“-telnet XXX.XXX.XXX.XXX”
[void]$ps.Start()
$PlinkStreamWriter=$ps.StandardInput
开始睡眠-m 500
$PlinkStreamWriter.Write(“login`r”)
开始睡眠-m 500
$PlinkStreamWriter.Write(“密码'r”)
开始睡眠-m 500
$PlinkStreamWriter.Write(“获取状态”)
开始睡眠-m 500
写入主机“状态字符串:。。。。。
$PlinkStreamWriter.Write(“退出`r”)
$PlinkStreamWriter.Close();
如果(!$ps.HasExited){$ps.Kill()}

如果我理解正确,当您发送

$PlinkStreamWriter.Write("get-status")
你收到

Status is 01 02 03
如果这是一致的,并且要将此值指定给变量,只需在命令开头定义变量:

$result =  $PlinkStreamWriter.Write("get-status")
现在,如果要从$result中存储的值中删除“Status is”:

$result = $result -replace "Status is ",""
现在$result只包含
“01 02 03”

您现在可以更新
写入主机
命令:

Write-Host "Status string: $result"

这可能很有用,您可以将错误消息和警告消息的输出重定向到标准输出。例如:

调用表达式“cmd/c”c:\Program Files(x86)\PuTTY\plink.exe“$plinkcmd 4>&13>&12>&1”


谢谢,但是当我使用这段代码($result=$PlinkStreamWriter.Write(“get status”))时,我会得到一个空的$result var.OK,但是发送字符串的是什么呢?我不确定,但是可能应该有一些命令,比如“$PlinkStreamWriter.Write”,用于$ps.StandardInput或者可能是Output?无法将捕获的plink流指定给结果值。我试过一些不同的变体。谢谢你的关注。哦,也许您知道一些其他方法,可以让powershell脚本在没有新窗口和隐藏模式的情况下工作,但使用plink telnet或ssh命令执行?