我有一个I列表(列表"X"),我试图找到域名。我还有一个Excel文件,其中包含170个带有相应域名的IP 000+条目。
因此,我首先导入Excel文件:$dnsEntries = Import-Excel -Path '.\file.xlsx' -WorksheetName "list"
然后,对于列表"X“中的每个IP,我尝试在$dnsEntries中找到它,这样我就可以得到域名:
foreach($IP in $IPs) {
$DN=($dnsEntries.Where({$_."Address" -like $IP})).Name
}不幸的是,每个IP至少需要2秒,我有5000+,所以这需要很长的时间。困扰我的是,Excel可以用一个简单的公式在不到3秒的时间内找到所有的5000+对应的域名。我知道我绝不会和PowerShell走得这么近,但两者之间的差别有多大呢?
我能加快搜索速度吗?
提前谢谢!
编辑:这里是一个可复制的例子。有些IP是不会被匹配的。
$IPs = @("10.10.10.1","10.10.10.5","10.10.10.66","10.10.10.99","10.10.10.235","10.10.10.73","10.10.10.98","10.10.10.56")
$dnsEntries = @(
@{Address="10.10.10.73";Name="ip1.local"},
@{Address="10.10.10.98";Name="ip2.local"},
@{Address="10.10.10.1";Name="ip3.local"},
@{Address="10.10.10.56";Name="ip4.local"},
@{Address="10.10.10.235";Name="ip5.local"},
@{Address="10.10.10.5";Name="ip6.local"},
@{Address="10.10.10.11";Name="ip7.local"},
@{Address="10.10.10.81";Name="ip8.local"},
@{Address="10.10.10.2";Name="ip9.local"}
)
foreach($IP in $IPs) {
$DN=($dnsEntries.Where({$_."Address" -like $IP})).Name
Write-Host $DN
}发布于 2022-03-02 13:04:19
正如其中一个注释所述,我使用以下代码将$dnsEntries从一个ArrayList转换为一个哈希表:
$import = Import-Excel -Path '.\file.xlsx' -WorksheetName "list"
$dnsEntries = @{}
foreach($entry in $import){
$dnsEntries.Add($entry.Address,$entry.Name)
}
foreach($IP in $IPs) {
$DN=$dnsEntries[$IP]
Write-Host $DN
}它仍然需要很长的时间来转换它,但然后寻找一个域名为一个IP几乎是即时!所以最终它节省了很多时间。
感谢你们的建议!
https://stackoverflow.com/questions/71311780
复制相似问题