Networking
異常後循環執行直到失敗
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)
上面的腳本塊在異常後退出可以有人幫助如何繼續直到它變為真。
$?
包含上次操作的執行狀態。如果最後一個操作成功則包含 True ,如果失敗則包含False 。
在您的程式碼中,最後一個操作是 ( successful )
Write-Warning $error[0]
。我會在之後使用
Do { … } While ($true)
withbreak
聲明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
塊絕對是多餘的……