簡體   English   中英

在 Powershell 中使用 nslookup 獲取主機名的 IP 地址

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM