[英]Getting hostnames for ip-adresses using nslookup in Powershell
[英]Getting IP addresses for hostnames using nslookup in Powershell
我是 Powershell 腳本的新手,我需要編寫一個腳本。 我有一個服務器主機名列表,我需要獲取這些服務器的 IP 地址並將結果寫入文件。
主機名是 Excel 電子表格中的一列,但我可以將它們格式化為任何內容(csv、每行一個主機名的簡單 txt 文件等)。
我想以服務器的主機名及其每行 IP 地址的方式格式化輸出(因此,如果服務器有多個 IP,則有多行)。
到目前為止,我一直在使用每行帶有主機名的簡單文本文件,但是從 PS 中的輸出中,我無法區分 IP 地址用於哪個服務器。
$servers = get-content "path_to_the_file"
foreach ($server in $servers) {
[System.Net.Dns]::GetHostAddresses($server)
}
所以我想知道從 csv 文件加載主機名並將主機名和相關 IP 地址再次打印到另一個 csv,但我不確定如何。
我正在研究通過在 foreach 中運行 nslookup $server 來捕獲所需信息(主機名和 IP)的可能性。
有人可以幫我一把嗎?
謝謝你。
將主機名與地址組合可以在循環內完成。 由於主機可以有多個 IP 地址,因此您也需要考慮到這一點。 這將創建另一個循環。 像這樣,
$servers = get-content "path_to_the_file"
foreach ($server in $servers) {
$addresses = [System.Net.Dns]::GetHostAddresses($server)
foreach($a in $addresses) {
"{0},{1}" -f $server, $a.IPAddressToString
}
}
如果沒有 DNS 記錄,這將顯示“IP 無法解析”。
$servers = get-content "path_to_the_file"e
foreach ($Server in $Servers)
{
$Addresses = $null
try {
$Addresses = [System.Net.Dns]::GetHostAddresses("$Server").IPAddressToString
}
catch {
$Addresses = "Server IP cannot resolve."
}
foreach($Address in $addresses) {
write-host $Server, $Address
}
}
假設您有一致的命名約定/計算機在 AD 中,您還可以在 Foreach-object 循環中使用 nslookup 和 'get-ADcomputer' cmdlet。
'Select-Object -unique' 可以很好地去除結果中查詢的 DC 實例,但只有一個實例。
get-adcomputer -Filter {name -like 'nameOfComputer*'} | ForEach-Object
{nslookup $_.name} | Select-Object -Unique
我只是使用了“Nicholas Leader”提供的cmdlet
。
它為每台以XX-
開頭的機器返回了每個 IP 地址的響應
榮譽!
get-adcomputer -Filter {name -like 'XX-*'} | ForEach-Object {nslookup $_.name} | Select-Object -Unique
#!/usr/bin/env bash
echo "############# Reverse DNS ##############"
while read id servername;do
ip=$(nslookup $servername | grep ^Name -A1 | grep Address | awk '{printf ($2" ")}');
echo "$id,$servername,$ip";
done<$1 >$2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.