Um script do PowerShell para obter uma lista de domínios e apresentar os respectivos registos A e AAAA como CSV

Este foi o resultado de uma colaboração entre mim (com conhecimentos de programação, mas não de PowerShell!) e o ChatGPT. Fiquei impressionado com o que pode ser feito com o ChatGPT - é assim que o trabalho deve ser! Rápido, sem ter de pesquisar cada linha. Homem e máquina em perfeita colaboração:

# Script PowerShell para obter registos A e AAAA para uma lista de domínios, com saída de depuração

# Defina o caminho para a lista de domínios e o arquivo CSV de saída
$domainListPath = "C:\your\path\domains.txt"
$outputCsvPath = ".\domain_records.csv"

# Ler a lista de domínios do arquivo
$domains = Get-Content $domainListPath

# Preparar um array para guardar os resultados
$results = @()

# Percorra cada domínio e consulte seus registros A e AAAA
foreach ($domain in $domains) {
    Write-Host "A processar domínio: $domain"

    # Inicializar o objeto de registo
    $record = New-Object PSObject -Property @{
        Domain = $domain
        ARecord = $null
        AAAARecord = $null
		WARecord = $null
		WAAAARecord = $null
    }

    Write-Host " A efetuar nslookup..."
    # Executar nslookup para registos A e AAAA
    $nslookupResults = nslookup $domain
	$nslookupResults = $nslookupResults | Select-Object -Skip 2

    # Extrair registos A e AAAA
    foreach ($line in $nslookupResults) {
		Write-Host "Saída de depuração"
		Write-Host $line
        if ($line -match "(\d+\.\d+\.\d+\.\d+)") {
			$address = $matches[1]
			Write-Host " Encontrado um registo A: $address"
			$record.ARecord = $address
		} elseif ($line -match "([a-fA-F0-9:]+:[a-fA-F0-9:]+)") {
			$address = $matches[1]
			Write-Host " Registo AAAA encontrado: $address"
			$record.AAAARecord = $address
		}
		

    }
	
	Write-Host " A efetuar o nslookup da www..."
    # Executar nslookup para registos A e AAAA
    $nslookupResults = nslookup www.$domain
	$nslookupResults = $nslookupResults | Select-Object -Skip 2

    # Extrair registos A e AAAA
    foreach ($line in $nslookupResults) {
		Write-Host "Saída de depuração"
		Write-Host $line
        if ($line -match "(\d+\.\d+\.\d+\.\d+)") {
			$address = $matches[1]
			Write-Host " Encontrado um registo A: $address"
			$record.WARecord = $address
		} elseif ($line -match "([a-fA-F0-9:]+:[a-fA-F0-9:]+)") {
			$address = $matches[1]
			Write-Host " Registo AAAA encontrado: $address"
			$record.WAAAARecord = $address
		}
		

    }

    # Adicionar o registo à matriz de resultados
    $results += $record
}

Write-Host "Exportando resultados para CSV..."
# Exportar os resultados para um ficheiro CSV
$results | Export-Csv -NoTypeInformation -Path $outputCsvPath

Write-Host "Script concluído. Verificar $outputCsvPath para a saída."

# Fim do script

certifique-se de ajustar o caminho na linha $domainListPath = "C:\your\path\domains.txt".

O script pode ser guardado como um ficheiro .ps1 e depois executado no Windows PowerShell.

O ficheiro domains.txt tem este aspeto, por exemplo - simplesmente um domínio em cada linha:

7vi.de
7voice.de
airtaxi.to

O resultado tem o seguinte aspeto:

O ChatGPT fez isto por si próprio?

Não, não foi - mas forneceu sintaxe e "como fazer" suficientes para que eu pudesse resolver os problemas rapidamente. Nos comentários pode ver o código original, que utilizou o servidor NS que eu uso.

Este é um exemplo de como aumentar enormemente a sua produtividade e fazer coisas novas, que não era capaz de fazer antes - porque a relação tempo/resultado não o permitia.

Este é um exemplo de como executar verificações e coisas de que necessita, criando rapidamente os seus próprios scripts.

(Se eu quisesse mesmo fazer isto antigamente, provavelmente teria usado Ruby ou Python, e escrito isto numa máquina Linux. Acontece que o meu ambiente de trabalho é - ainda - uma máquina Windows, por isso esta é a opção conveniente para o fazer rapidamente).