PowerShell에서 다음을 사용할 수 있습니다. Test-NetConnection 원격 컴퓨터에서 포트를 사용할 수 있는지(열려 있는지) 확인하는 cmdlet입니다. 이 cmdlet을 사용하여 원격 서버 또는 네트워크 서비스의 응답 및 가용성을 확인하고 TCP 포트가 방화벽에 의해 차단되는지 테스트하고 ICMP 가용성 및 라우팅을 확인할 수 있습니다. 사실은, Test-NetConnection
다음과 같은 여러 인기 있는 네트워크 관리 도구를 대체합니다. ping
, tracert
, telnet
, pathping
TCP 포트 스캐너 등
Test-NetConnection으로 열린 TCP 포트 확인
Test-NetConnection cmdlet을 사용하여 TCP 포트만 확인할 수 있습니다. 예를 들어 원격 메일 서버에서 TCP 포트 25(SMTP 프로토콜)가 열려 있는지 확인하려면 다음을 수행합니다.
Advertisement
Test-NetConnection -ComputerName ny-msg01 -Port 25
메모. Test-NetConnection cmdlet을 사용하여 TCP 포트 연결만 테스트할 수 있습니다. 그러나 cmdlet을 사용하여 원격 UDP 포트의 가용성을 확인할 수는 없습니다.
Test-NetConnection 명령에는 별칭이 있습니다. 티엔씨. 동일한 명령의 단축 버전은 다음과 같습니다.
TNC ny-msg01 -Port 25
명령의 결과를 살펴보겠습니다.
ComputerName : ny-msg01 RemoteAddress : 10.20.1.7 RemotePort : 25 InterfaceAlias : CORP SourceAddress : 10.20.1.79 PingSucceeded : True PingReplyDetails (RTT) : 0 ms TcpTestSucceeded : True
보시다시피 cmdlet은 서버 이름을 IP 주소로 확인하고 ICMP 응답을 확인합니다(예: ping
), TCP 포트로부터의 응답을 확인합니다(포트 가용성). 지정된 서버는 ICMP를 통해 응답합니다(PingSucceeded = True
) TCP 포트 25가 열려 있습니다(RemotePort=25, TcpTestSucceeded= True
).
메모. 명령이 반환되면 핑성공=거짓 그리고 TcpTestSucceeded= 참이는 원격 컴퓨터에서 ICMP Echo 요청(ping)이 비활성화되었음을 의미할 가능성이 큽니다.
실행하면 매개변수가 없는 Test-NetConnection컴퓨터가 인터넷에 연결되어 있는지 확인합니다(인터넷 사용 가능 여부 확인). internetbeacon.msedge.net
주인).
–를 추가할 수 있습니다.InformationLevel 상세 원격 TCP 포트를 확인할 때 자세한 정보를 표시하는 옵션:
TNC 192.168.32.101 -Port 3389 -InformationLevel Detailed
cmdlet에는 다음과 같은 특수 매개변수가 있습니다.CommonTCP포트알려진 네트워크 프로토콜(HTTP, RDP, SMB, WINRM)의 이름을 지정할 수 있습니다.
예를 들어 HTTP 웹 서버의 가용성을 확인하려면 다음 명령을 사용할 수 있습니다.
Test-NetConnection -ComputerName woshub.com -CommonTCPPort HTTP
또는 기본 RDP 포트(TCP/3389)의 가용성을 확인하십시오.
Test-NetConnection ny-rds1 –CommonTCPPort RDP
Test-NetConnection cmdlet이 반환하는 모든 매개 변수를 나열할 수 있습니다.
Test-NetConnection ny-man01 -port 445|Format-List *
포트가 사용 가능한지 확인만 하면 되는 경우 더 빠르게 확인할 수 있습니다.
Advertisement
TNC ny-msg1 -Port 25 -InformationLevel Quiet
cmdlet이 반환합니다. True
이는 원격 TCP 포트가 열려 있음을 의미합니다.
(New-Object System.Net.Sockets.TcpClient).Connect('ny-msg01', 25)
Test-NetConnection cmdlet을 사용하여 다음을 사용하여 원격 서버에 대한 경로를 추적할 수 있습니다.경로 추적 매개변수(내장 매개변수와 유사 tracert
Windows의 명령). 다음을 사용하여 경로 확인 중에 최대 홉 수를 제한할 수 있습니다. -홉 매개변수.
Test-NetConnection ny-man01 –TraceRoute
cmdlet이 요약 네트워크 액세스 지연을 밀리초 단위로 반환했습니다(PingReplyDetails (RTT): 41 ms
) 뿐만 아니라 대상 호스트로 가는 도중에 있는 라우터의 모든 IP 주소.
PowerShell: 여러 호스트에서 열린 포트 확인
PowerShell을 사용하여 여러 원격 컴퓨터에서 특정 포트의 가용성을 확인할 수 있습니다. 다음 이름으로 일반 텍스트 파일에 호스트 이름 또는 IP 주소 목록을 저장합니다. servers.txt
.
예를 들어, 작업은 TCP/25 포트가 응답하지 않거나 서버 목록에서 닫힌 호스트를 찾는 것입니다.
Get-Content c:PSlist_servers.txt | where { -NOT (Test-Netconnection $_ -Port 25 -InformationLevel Quiet)}| Format-Table -AutoSize
Advertisement
원격 서버의 가용성을 확인하고 서버를 사용할 수 없는 경우 팝업 알림을 표시하는 간단한 모니터링 PowerShell 스크립트를 사용할 수 있습니다.
예를 들어 AD 상태 확인 중에 모든 도메인 컨트롤러에서 기본 서비스의 가용성을 확인할 수 있습니다(DC 목록은 Get-ADDomainController cmdlet을 사용하여 얻을 수 있음). DC에서 다음 서비스를 확인하자(유사한 ‘도메인 및 트러스트‘ PortQry 도구의 규칙):
- RPC – TCP/135
- LDAP – TCP/389
- LDAP – TCP/3268
- DNS – TCP/53
- 케르베로스 – TCP/88
- SMB – TCP/445
$Ports = "135","389","636","3268","53","88","445","3269", "80", "443"
$AllDCs = Get-ADDomainController -Filter * | Select-Object Hostname,Ipv4address
ForEach($DC in $AllDCs){
Foreach ($P in $Ports){
$check=Test-NetConnection $DC.Ipv4address -Port $P -WarningAction SilentlyContinue
If ($check.tcpTestSucceeded -eq $true)
{Write-Host $DC.hostname $P -ForegroundColor Green -Separator " => "}
else
{Write-Host $DC.hostname $P -Separator " => " -ForegroundColor Red}
}
}
스크립트는 도메인 컨트롤러에서 지정된 TCP 포트를 확인하고 사용할 수 없는 포트가 있으면 빨간색으로 강조 표시합니다(이 PowerShell 스크립트를 Windows 서비스로 실행할 수 있음).
PowerShell의 간단한 TCP/IP 포트 스캐너
PowerShell을 사용하여 원격 호스트 또는 IP 서브넷에서 열려 있거나 닫힌 TCP 포트를 검색하는 간단한 IP 스캐너를 구현할 수 있습니다.
192.168.1.100과 192.168.1.150 사이의 IP 주소 범위를 스캔하고 포트 3389가 열려 있는 컴퓨터를 표시하려면:
foreach ($ip in 100..150) {Test-NetConnection -Port 3389 -InformationLevel "Detailed" 192.168.1.$ip}
원격 호스트에서 TCP 포트 범위(1~1024)를 스캔합니다.
foreach ($port in 1..1024) {If (($a=Test-NetConnection srvfs01 -Port $port -WarningAction SilentlyContinue).tcpTestSucceeded -eq $true){ "TCP port $port is open!"}}
PowerShell을 사용하여 Windows에서 열린 포트를 나열하는 방법
사용 NetTCPConnection 가져오기 로컬 컴퓨터에서 열려 있는 포트를 나열하는 cmdlet(이는 NETSTAT
). 컴퓨터에서 열려 있는 모든 TCP 포트 목록은 다음과 같이 볼 수 있습니다.
Advertisement
Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort| Sort-Object -Property LocalPort | Format-Table
컴퓨터의 특정 포트에서 수신 대기 중인 프로그램(프로세스)을 찾으려면 다음 명령을 사용하십시오(여기서 443은 확인하려는 포트 번호임).
Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess | ft Id, ProcessName, UserName, Path