我從文本文件(serverlist.txt)服務器100,000名單PowerShell的:獲取內容從大文件(服務器列表)
當我在一個鏡頭中運行它會爆我的內存和CPU以及時間需要更長的時間(大約3天)才能完成DNS查找掃描。
我試圖拆分下面包含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(日期時間)後.csv文件
如:
- 運行powershell腳本。\ filename.ps1
- 從serverlist1.txt輸入
- 輸出dnslog(日期時間).csv文件
- 輸入從serverlist2.txt
- 輸出dnslog(日期時間).csv文件從serverlist3.txt
- 輸出dnslog(日期時間)
- 輸入.csv文件
- 輸入從serverlist4.txt
- 輸出dnslog(日期時間)的.csv從serverlist5.txt
- 輸入
- 輸出dnslog(日期時間)的.csv
完成!
如果我有多於5個文本文件列表,它將繼續從輸入文件循環直到完成。