如何抑制plink.exe中的“键盘交互”提示

问题描述

我有一个PowerShell脚本,该脚本定期调用plink.exe。通常,关于键盘交互式提示的两条输出行只是令人讨厌。

但是,当使用Start-Job运行时,它们会在我调用Receive-Job时立即作为错误文本输出

有什么方法可以抑制这些?我不想抑制所有错误

我的测试代码

$test_scriptblock = [scriptblock]::Create(@"
    param(
        `$argumentlist
    )
    `$pw = `$argumentlist.pw
    & 'C:\Program Files\Putty\Plink.exe' -ssh `"admin@*.*.*.*" -pw `$pw -batch whoami
"@)
$testParm = @{
    pw = Read-Host "password"
}
$testjob = Start-Job -scriptblock $test_scriptblock -Argumentlist $testParm
$i = 0
do {
    $i++
    sleep 2
    $results = Receive-Job $testjob
    ForEach ($result in $results) {
        Write-Host $result
    }
    if ($testjob.State -eq "Completed") {
        $jobcompleted = $true
    }
    If ($i -gt 10) {
        Stop-job $testjob
        $jobcompleted = $true
    }
} until ($jobcompleted)

解决方法

无法在Plink中禁止键盘交互提示。

我建议您使用本机.NET SSH实现,例如SSH.NET,而不是驱动外部控制台应用程序。