【发布时间】:2016-08-12 09:51:15
【问题描述】:
我有来自文本文件 (serverlist.txt) 的 100,000 个服务器列表
当我一次运行时,它会破坏我的内存和 cpu,并且需要更长的时间(大约 3 天)才能完成对 DNSlookup 的扫描。
我尝试拆分包含以下 20k 服务器列表的文件,并且可以完成扫描长达 10 分钟的每个文件。
serverlist1.txt
serverlist2.txt
serverlist3.txt
serverlist4.txt
serverlist5.txt
$objContainer = @()
$values = @()
$domains = Get-Content -path "serverlist1.txt"
$named = 0
$timestamp= get-date
$domains | ForEach-Object {
$domain = $_
nslookup $domain 2>&1 | ForEach-Object {
if ($_ -match '^Name:\s*(.*)$') {
$values += $matches[1]
$named = 1;
} elseif (($_ -match '^.*?(\d*\.\d*\.\d*\.\d*)$') -and ($named -eq 1)) {
$values += $matches[1]
} elseif ($_ -match '^Aliases:\s*(.*)$') {
$values += $matches[1]
}
}
$obj = New-Object -TypeName PSObject
#$obj | Add-Member -MemberType NoteProperty -name 'Domain' -value $domain
$obj | Add-Member -MemberType NoteProperty -name 'Name' -value $values[0]
$obj | Add-Member -MemberType NoteProperty -name 'IP Address' -value $values[1]
$obj | Add-Member -MemberType NoteProperty -name 'Alias' -value $values[2]
$obj | Add-Member -MemberType NoteProperty -name 'Timestamp' -value $timestamp
$objContainer += $obj
$values = @()
$named = 0
}
Write-Output $objContainer
$objContainer | Export-csv "dnslog_$((Get-Date).ToString('MM-dd-yyyy_hh-mm-ss')).csv" -NoTypeInformation
我的问题是,如何在生成 dnslog(datetime).csv 后立即执行并循环输入文本文件
例如:
- 运行 powershell 脚本 .\filename.ps1
- 来自 serverlist1.txt 的输入
- 输出 dnslog(datetime).csv
- 来自 serverlist2.txt 的输入
- 输出 dnslog(datetime).csv
- 来自 serverlist3.txt 的输入
- 输出 dnslog(datetime).csv
- 来自 serverlist4.txt 的输入
- 输出 dnslog(datetime).csv
- 来自 serverlist5.txt 的输入
- 输出 dnslog(datetime).csv
完成!
如果我有超过 5 个文本文件列表,它将继续从输入文件循环直到完成。
【问题讨论】:
标签: csv powershell