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
блок точно лишний…