포트가 열려 있는지 확인하기 위해 radom IP 또는 호스트 이름을 확인하는 스크립트를 작성하고 싶습니다. 여기까지 내가 지금까지 가지고있는 것이있다. 스크립트 이름은 체크 포트입니다.powershell을 사용하여 열린 포트를 확인하는 방법은 무엇입니까?
foreach ($xhost in $computername){
Write-Host $xhost
foreach ($port in $ports) {
$Socket = New-Object System.Net.Sockets.TCPClient
$Connection = $Socket.BeginConnect($xhost,$port,$null,$null)
$Connection.AsyncWaitHandle.WaitOne(5000,$false) | out-null
if ($Connection -eq $true)
{ write-host = "$xhost port $port is open" }
else
{ write-host = "port $port is closed" }
$Socket.EndConnect($Connection)
$Socket.Close()
}
}
나는 다음과 같은 방법으로 입력 값을 싶습니다. \ checkport '192.186.1.5' 또는 '192.168.1.5', '192.168.1.105'192.168.1.110 '| 체크 포트
IP 주소를 읽거나 결과를 표시하지 않는 것 같습니다.
누군가이 스크립트로 내가 잘못하고있는 것을 보여줄 수 있는지 궁금합니다.
[This] (http://blogs.technet.com/b/heyscriptingguy/archive/2012/07/02/use-powershell-for-network-host-and-port-discovery-sweeps.aspx) 및 [이] (http://gallery.technet.microsoft.com/scriptcenter/Invoke-TSPingSweep-b71f1b9b) 도움이 될 수 있습니다. –
스크립트에 대한 param 블록을 표시 할 수 있습니까? –
1. 'WaitOne'의 반환 값은 대기가 완료되었거나 시간이 초과 되었는지를 알려주지 만 멀리 버리고 있습니다. 2. 왜 차단하려고하면 Socket.Connect를 차단하지 않습니까? – Richard