mshutov & साल्सेल्वप्रबु द्वारा महान उत्तर।मुझे कुछ और अधिक मजबूत की जरूरत थी, और उसने सभी आईपी एड्रेस की जांच की जो केवल पहले की जांच करने के बजाय प्रदान की गई थीं।
मैं टेस्ट-कनेक्शन फ़ंक्शन की तुलना में पैरामीटर नामों और कार्यक्षमता में से कुछ को दोहराना चाहता था।
यह नया फ़ंक्शन आपको पुनः प्रयासों की संख्या और प्रत्येक प्रयास के बीच विलंब सेट करने की अनुमति देता है। का आनंद लें!
function Test-Port {
[CmdletBinding()]
Param (
[string] $ComputerName,
[int] $Port,
[int] $Delay = 1,
[int] $Count = 3
)
function Test-TcpClient ($IPAddress, $Port) {
$TcpClient = New-Object Net.Sockets.TcpClient
Try { $TcpClient.Connect($IPAddress, $Port) } Catch {}
If ($TcpClient.Connected) { $TcpClient.Close(); Return $True }
Return $False
}
function Invoke-Test ($ComputerName, $Port) {
Try { [array]$IPAddress = [System.Net.Dns]::GetHostAddresses($ComputerName) | Select-Object -Expand IPAddressToString }
Catch { Return $False }
[array]$Results = $IPAddress | % { Test-TcpClient -IPAddress $_ -Port $Port }
If ($Results -contains $True) { Return $True } Else { Return $False }
}
for ($i = 1; ((Invoke-Test -ComputerName $ComputerName -Port $Port) -ne $True); $i++)
{
if ($i -ge $Count) {
Write-Warning "Timed out while waiting for port $Port to be open on $ComputerName!"
Return $false
}
Write-Warning "Port $Port not open, retrying..."
Sleep $Delay
}
Return $true
}
स्रोत
2017-10-25 13:10:02
यहां देखें http://poshcode.org/85 –