问题描述
我有一个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,而不是驱动外部控制台应用程序。