# Port scanner en PowerShell > Escanear puertos **desde la víctima Windows sin nmap** (útil tras un foothold para mirar la red interna, antes de montar Pivoting ligolo-ng). Usa Operadores PowerShell. ## Con timeout (NO se cuelga) ```powershell 1..200 | % { $c=New-Object Net.Sockets.TcpClient; $r=$c.BeginConnect("IP",$_,$null,$null); if($r.AsyncWaitHandle.WaitOne(300) -and $c.Connected){"Puerto $_ ABIERTO"}; $c.Close() } ``` ## Solo puertos concretos (instantáneo) ```powershell 53,88,135,139,445 | % { $c=New-Object Net.Sockets.TcpClient; $r=$c.BeginConnect("IP",$_,$null,$null); if($r.AsyncWaitHandle.WaitOne(300) -and $c.Connected){"$_ ABIERTO"}; $c.Close() } ``` ## Test rápido de un puerto ```powershell Test-NetConnection IP -Port 53 -wa 0 -ea 0 # mira TcpTestSucceeded : True/False ``` ## La regla clave - `$c.Connect()` = **síncrono**, se cuelga ~21s en puertos filtrados. - `$c.BeginConnect()+WaitOne(ms)` = controlas el timeout, **NO se cuelga**. - Para líneas largas: `notepad scan.ps1` y `powershell -ep bypass -File .\scan.ps1`. Relacionado: Nmap · Puertos olvidados · OSCP MOC