2015-09-04 23 views
5

Testuję kilka domen i ich zdolność do powiadamiania mnie, gdy wydarzy się nienormalne zdarzenie. Używam nmap do skanowania domen dla otwartych portów. Poniższy skrypt otwiera nowe okno cmd i uruchamia nmap. Wyszukuję identyfikator procesu i sprawdzam, czy proces (cmd) nadal działa. Po zakończeniu skanowania uruchomi ponownie skanowanie nmap.Wiele powtarzających się procesów

function nmaptest { 
    $prog1="cmd" 
    [email protected]("/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){ } 
} 

Działa to dobrze. Potrzebuję pomocy w równoległym wykonywaniu tego procesu 8 razy. (jeśli jest to możliwe)

+1

Jaka jest twoja wersja PowerShell? – Piyush

+0

to jest wersja 2 –

Odpowiedz

4

Cóż, chyba że istnieje jakiś szczególny powód, dla którego uruchamiasz CMD (np. potrzebujesz zobaczyć wyjście), polecam zamiast tego używanie zadań. Łatwo nimi zarządzać i sprawdzać, czy nadal działają.

$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 
} 
+0

będzie to pomóc w uruchomieniu równolegle zadań mulitple? –

+0

Zadania są uruchamiane asynchronicznie, więc tak –

+0

W celu wyjaśnienia powyższy skrypt tworzy zadania i uruchamia je równolegle, a następnie wielokrotnie wykonuje pętle i ponownie uruchamia te, które zostały zakończone. Działa tak wiele zadań, jak podajesz parametry $ sx. Uwaga Właśnie dodałem opcję uśpienia w pętli, więc nie jest ona niepotrzebnie uruchomiona. –