2014-10-08 5 views
2

현재 AD 목록을 컴퓨터에 쿼리하고, 컴퓨터를 핑 (ping)하여 활성화되어있는 컴퓨터를 확인한 후 특정 컴퓨터로 텔넷으로 연결하는 스크립트를 작성하려고합니다. 포트에 연결하십시오. 내가 찾고있는 출력은 내가 말한 포트에 telnet으로 연결할 수없는 AD의 pingable 컴퓨터의 전체 목록입니다.Powershell에서 텔넷 포트 검사를 자동화하는 방법은 무엇입니까?

나는 thesefewquestions을 읽었지 만, 내가하려고하는 것에 대해서는별로 맞지 않습니다. 텔넷에 접속하지 않고 텔넷 연결이 성공했는지 (또는 텔넷의 종료를 자동화하는지) 확인하고 테스트 할 다음 머신으로 이동하기 만하면됩니다. 내 스크립트의 광고 및 핑 (ping) 부분이 설정되었으므로 여기서 막혔습니다. 내가 시도한 것들은 계획대로 잘 진행되지 않았다. 필요한 경우 여기

은 스크립트의 첫 번째 부분에 대한 코드입니다 :

Get-ADComputer -Filter * -SearchBase 'DC=hahaha,DC=hehehe' | ForEach { 

$computerName = $_.Name 

$props = @{ 
    ComputerName = $computerName 
    Alive = $false 
    PortOpen = $false 
} 

If (Test-Connection -ComputerName $computerName -Count 1 -Quiet) { 

    $props.Alive = $true 
} 
+1

[여기] (http://www.powershelladmin.com/wiki/Check_for_open_TCP_ports_using_PowerShell)의 간단한 코드 예제는 어떻습니까? 포트가 열려 있는지 테스트하려면 연결을 시도해야합니다. – Matt

+0

제안에 감사드립니다, Matt! 나는 그 코드를 추가했는데 모든 컴퓨터가 포트가 닫히는 것으로 반환되었는데, 나는 그것이 사실이 아닌 것으로 알고있다. 나는 telnet과 powershell 모두를 가진 상대적으로 초보자이지만, 필자는 필요한 결정을 내리기 위해 telnet을 사용해야 할 필요가 있다고 확신합니다. – Justin

+0

'telnet' 명령은 @Matt가 제안한 코드와 똑같은 기능을합니다. –

답변

3

가장 쉬운 방법이 될 것이다 당신의 자신에이 코드를 적응. 이 코드 샘플은 PowerShellAdmin wiki에서 가져옵니다. 확인할 컴퓨터와 포트를 수집합니다. 그런 다음 Net.Sockets.TcpClient을 사용하여 각 포트에서 해당 컴퓨터에 연결을 시도하십시오.

foreach ($Computer in $ComputerName) { 

    foreach ($Port in $Ports) { 

     # Create a Net.Sockets.TcpClient object to use for 
     # checking for open TCP ports. 
     $Socket = New-Object Net.Sockets.TcpClient 

     # Suppress error messages 
     $ErrorActionPreference = 'SilentlyContinue' 

     # Try to connect 
     $Socket.Connect($Computer, $Port) 

     # Make error messages visible again 
     $ErrorActionPreference = 'Continue' 

     # Determine if we are connected. 
     if ($Socket.Connected) { 
      "${Computer}: Port $Port is open" 
      $Socket.Close() 
     } 
     else { 
      "${Computer}: Port $Port is closed or filtered" 
     } 
     # Apparently resetting the variable between iterations is necessary. 
     $Socket = $null 
    } 
} 
관련 문제