powershell - microsoft - MĂșltiples procesos recurrentes
porta azure (1)
Bueno, a menos que haya alguna razón específica por la que está lanzando CMD (como la necesidad de ver el resultado), le recomendaría usar trabajos en su lugar. Son fáciles de administrar y probar si todavía están funcionando.
$jobs = @()
$sx = ''192.168.1.0/24'', ''range2'', ''etc''
For ($i = 0; $i -lt $sx.Length; $i++) { $jobs += Start-Job { nmap.exe -Pn -sX $sx[i] } }
while ($true) {
For ($i = 0; $i -lt $sx.Length; $i++) {
if ($jobs[i].State -eq "Completed" {
Write-Output ("Completed job for " + $sx[i])
Receive-Job $jobs[i]
$jobs[i] = Start-Job { nmap.exe -Pn -sX $sx[i] }
}
}
Start-Sleep -s 5
}
Estoy probando algunos dominios y su capacidad para alertarme cuando ocurre un evento anormal. Estoy usando nmap para escanear dominios para puertos abiertos. El siguiente script abre una nueva ventana de cmd y ejecuta nmap. Busco el ID del proceso y verifico si el proceso (cmd) aún se está ejecutando. Una vez que finaliza el escaneo, ejecutará el escaneo nmap nuevamente.
function nmaptest {
$prog1="cmd"
$params1=@("/C";"nmap.exe -Pn -sX 192.168.1.0/24")
Start-Process -Verb runas $prog1 $params1 #starts
}
while(1 -eq 1){
nmaptest
$processes = get-process $prog1 | out-string
$sp = $processes.Split('' '',[System.StringSplitOptions]::RemoveEmptyEntries)
$procid = $sp[22]
echo $procid
while(get-process -id $procid){ }
}
Esto funciona bien Lo que necesito ayuda es hacer este proceso 8 veces en paralelo. (si eso es posible)