多个重复过程
Multiple Reoccurring Processes
我正在测试一些域及其在异常事件发生时提醒我的能力。我正在使用 nmap 扫描域中的开放端口。下面的脚本打开一个新的 cmd window 和 运行s nmap。我搜索进程 ID 并检查进程 (cmd) 是否仍在 运行ning。一旦扫描结束,它会运行 nmap 再次扫描。
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){ }
}
这很好用。我需要帮助的是并行执行此过程 8 次。 (如果可能的话)
嗯,除非您有任何特定原因要启动 CMD(例如需要查看输出),否则我建议您改用作业。它们很容易管理和测试它们是否仍然 运行。
$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
}
我正在测试一些域及其在异常事件发生时提醒我的能力。我正在使用 nmap 扫描域中的开放端口。下面的脚本打开一个新的 cmd window 和 运行s nmap。我搜索进程 ID 并检查进程 (cmd) 是否仍在 运行ning。一旦扫描结束,它会运行 nmap 再次扫描。
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){ }
}
这很好用。我需要帮助的是并行执行此过程 8 次。 (如果可能的话)
嗯,除非您有任何特定原因要启动 CMD(例如需要查看输出),否则我建议您改用作业。它们很容易管理和测试它们是否仍然 运行。
$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
}