Назад | Перейти на главную страницу

Цикл делать до тех пор, пока не произойдет сбой после исключения

do

{

Try{
if (New-Object System.Net.Sockets.TCPClient -ArgumentList $server,3389 )  
{ 

Write-Host $server 'Ready for RDP connection'-ForegroundColor Green }
}
catch { write-warning $error[0] }
}until ($? -eq $true)

Вышеупомянутый выход блока сценария после исключения может кто-нибудь помочь, как продолжить, пока он не получит правда.

Об автоматических переменных:

$?

Содержит статус выполнения последней операции. Это содержит Правда если последняя операция прошла успешно и Ложь если это не удалось.

В вашем коде последняя операция (успешный) Write-Warning $error[0].

Я бы использовал Do { … } While ($true) с участием break заявление после Write-Host $server 'Ready for RDP connection -ForegroundColor Green'

Если вы настаиваете на Until ключевое слово, затем перепишите фрагмент кода следующим образом:

do {
  $LastSuccess = $true
  Try {
    if (New-Object System.Net.Sockets.TCPClient -ArgumentList $server,3389 )  
    {
       Write-Host $server 'Ready for RDP connection'-ForegroundColor Green
       ### here's a possible place for (facultative) break
    }
  }
  catch { 
    write-warning $error[0]
    $LastSuccess = $false
  }
} until ( $LastSuccess )

В любом случае я бы сохранил New-Object System.Net.Sockets.TCPClient к переменной. Этот конструктор автоматически попытаться установить соединение если предоставлено имя хоста и номер порта удаленного хоста, и это так (-ArgumentList $server,3389). Тогда я бы предположил, что связь установлен и должен быть закрыт (и его ресурсы должны быть освобождены) позже в сценарии, используя Close() и / или Dispose() и / или Finalize() метод (ы).

Кстати, if внутри try блок точно лишний…