【发布时间】:2015-02-22 16:53:57
【问题描述】:
我正在尝试使用 powershell 和 plink 为一些 telnet/ssh 命令执行编写脚本(基于一些互联网示例)。但我想实现的主要功能是将这个命令的输出捕获到变量或文本文件中。如何拦截特定命令的输出?
例如:当我发送“get-status”命令时,它返回“Status is 01 02 03”。我可以将此字符串分配给 var 或文本文件吗?也许,只有“01 02 03”没有“状态”文字?
$ps = New-Object -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
Start-Sleep -m 500
$PlinkStreamWriter.Write("login`r")
Start-Sleep -m 500
$PlinkStreamWriter.Write("password`r")
Start-Sleep -m 500
$PlinkStreamWriter.Write("get-status")
Start-Sleep -m 500
Write-Host "Status string: " .....
$PlinkStreamWriter.Write("exit`r")
$PlinkStreamWriter.Close();
if (!$ps.HasExited) { $ps.Kill() }
【问题讨论】:
标签: powershell ssh scripting telnet plink