Я пытаюсь написать сценарий (на основе некоторых интернет-примеров) для выполнения команды telnet/ssh, используя powershell и plink. Но основная функция, которую я хотел бы реализовать, - это вывести вывод этой команды в переменную или текстовый файл. Как я могу перехватить вывод конкретной команды?Вывод команды telnet командной строки Powershell в var
Например: когда я отправляю команду «получить статус», он возвращает «Статус 01 02 03». Могу ли я передать эту строку в файл var или text? Может быть, только «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() }
Спасибо, но когда я использую этот код ($ result = $ PlinkStreamWriter.Write ("get-status")), я получаю пустой $ result var. – Wind
ОК, но тогда что это такое, что отправляет строку '' Status is 01 02 03 "'? –
Извините, что вы имеете в виду «что это такое»? Я не уверен, но, возможно, должна быть какая-то команда вроде «$ PlinkStreamWriter.Write» для $ ps.StandardInput или, может быть, Output? Этот захваченный поток plink не может быть назначен для результата результата. Я пробовал несколько разных вариантов. Спасибо за внимание. О, и, может быть, вы знаете некоторые другие способы заставить скрипт powershell работать без новых окон и в скрытом режиме, но с выполнением команд plink telnet или ssh? – Wind