[英]Powershell plink telnet command output into var
我正在嘗試使用 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() }
如果我正確理解您的意見,那么在您發送
$PlinkStreamWriter.Write("get-status")
你收到
Status is 01 02 03
如果這是一致的,並且您想將此值分配給變量,則只需在命令開頭定義變量:
$result = $PlinkStreamWriter.Write("get-status")
現在,如果要從$ result中存儲的值中刪除“狀態為”:
$result = $result -replace "Status is ",""
現在,$ result僅包含"01 02 03"
現在,您可以更新您的write-host
命令:
Write-Host "Status string: $result"
只需要一個簡單的重定向 (>)。 我在 Powershell v5.1.22000.282 中驗證了這對我有用。 這是我對任何需要它的人的方法。
$filepath = "$PSScriptRoot"
$PUTTY="$Env:ProgramFiles\\PuTTY\\plink.exe"
@"
vncserver -geometry 1920x1080
出口
"@| & $PUTTY -ssh $IP -l $USER -pw $PW > "$filepath/out.txt"
這可能有用,您可以將錯誤消息和警告消息的輸出重定向到標准輸出中。 例:
調用表達式“ cmd / c'C:\\ Program Files(x86)\\ PuTTY \\ plink.exe'$ plinkcmd 4>&1 3>&1 2>&1”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.