Una secuencia de comandos PowerShell para obtener una lista de dominios y mostrar sus registros A y AAAA como CSV

Este fue el resultado de una colaboración entre yo (con conocimientos de programación, ¡pero no en PowerShell!) y ChatGPT. Me asombra lo que se puede hacer con ChatGPT - ¡esto es lo que se supone que es el trabajo! Rápido, sin investigar cada línea. Humano y máquina en perfecta colaboración:

# Script PowerShell para obtener los registros A y AAAA de una lista de dominios, con salida de depuración

# Definir la ruta a la lista de dominios y el archivo CSV de salida
$domainListPath = "C:\su_ruta_dominios.txt"
$outputCsvPath = ".\domain_records.csv"

# Leer la lista de dominios del fichero
$domains = Get-Content $domainListPath

# Prepara un array para guardar los resultados
1TP4Resultados = @()

# Recorre cada dominio y consulta sus registros A y AAAA
foreach ($domain en $domains) {
    Write-Host "Procesando dominio: 1TP4Dominio"

    # Inicializar el objeto record
    $record = Nuevo-Objeto PSObject -Propiedad @{
        Dominio = $domain
        ARecord = $null
        AAAARecord = $null
		WARecord = $null
		WAAAARecord = $null
    }

    Write-Host " Realizando nslookup..."
    # Realizar nslookup para registros A y AAAA
    $nslookupResults = nslookup $domain
	$nslookupResults = $nslookupResults | Select-Object -Skip 2

    # Extraer registros A y AAAA
    foreach ($line in $nslookupResults) {
		Write-Host "Salida de depuración"
		Write-Host $line
        if ($line -match "(\d+.\d+.\d+.\d+)") {
			$address = $matches[1]
			Write-Host " Registro A encontrado: $address"
			$record.ARecord = $address
		} elseif ($line -match "([a-fA-F0-9:]+:[a-fA-F0-9:]+)") {
			$address = $matches[1]
			Write-Host " Registro AAAA encontrado: $address"
			$record.AAAARecord = $address
		}
		

    }
	
	Write-Host " Realizando www nslookup..."
    # Realizar nslookup para registros A y AAAA
    $nslookupResults = nslookup www.$domain
	$nslookupResults = $nslookupResults | Select-Object -Skip 2

    # Extraer registros A y AAAA
    foreach ($line in $nslookupResults) {
		Write-Host "Salida de depuración"
		Write-Host $line
        if ($line -match "(\d+.\d+.\d+.\d+.\d+)") {
			$address = $matches[1]
			Write-Host " Registro A encontrado: $address"
			$record.WARecord = $address
		} elseif ($line -match "([a-fA-F0-9:]+:[a-fA-F0-9:]+)") {
			$address = $matches[1]
			Write-Host " Registro AAAA encontrado: $address"
			$record.WAAAARecord = $address
		}
		

    }

    # Añadir el registro a la matriz de resultados
    $results += $record
}

Write-Host "Exportando resultados a CSV..."
# Exportar los resultados a un fichero CSV
$results | Export-Csv -NoTypeInformation -Path $outputCsvPath

Write-Host "Script completado. Compruebe $outputCsvPath para la salida".

# Fin del script

asegúrese de ajustar la ruta en la línea $domainListPath = "C:\su\path\domains.txt".

El script puede guardarse como un archivo .ps1 y luego ejecutarse en Windows PowerShell.

domains.txt tiene este aspecto, por ejemplo: simplemente un dominio en cada línea:

7vi.de
7voice.de
airtaxi.to

El resultado es el siguiente:

¿Lo hizo ChatGPT por su cuenta?

No, no lo hizo - pero proporcionó suficiente sintaxis y "cómo" para mí, para ser capaz de solucionar los problemas rápidamente. En los comentarios se puede ver su código original, que tomó el servidor NS que utilizo.

Este es un ejemplo de cómo aumentar masivamente tu productividad y hacer cosas nuevas que antes no podías hacer, porque la relación tiempo/rendimiento no te lo permitía.

Este es un ejemplo de cómo ejecutar comprobaciones y cosas que necesitas, creando tus propios scripts rápidamente.

(Si realmente hubiera querido hacer esto en los viejos tiempos, probablemente habría utilizado Ruby o Python, y escrito esto en una máquina Linux. Mi escritorio resulta ser -todavía- una máquina Windows, así que esta es la opción conveniente para subirlo rápidamente).