J'ai eu ce script en ligne. Au moins, je pourrais comprendre comment exporter les données vers un fichier CSV. Cela s'est avéré être si loin de mes capacités. J'ai essayé Export-Csv
et pipe, mais aucun n'a eu de succès.Comment puis-je modifier ce script PowerShell pour exporter les deux sections vers un fichier CSV sans couper de données?
J'ai eu une tentative réussie, mais toutes les données ont été placées dans une colonne et coupées, le paramètre -Width
n'a pas résolu cela non plus. Le reste du temps, je reçois juste des informations aléatoires comme Length
ou ce qui semble être des données corrompues avec un nombre et des lettres brouillés.
Tout ce script exécute ping
et nslookup
sur une liste d'adresses IP. Je veux le déplacer vers un fichier CSV afin que je puisse trier les données et trouver les adresses IP vides/non utilisées pour nettoyer notre espace IP ou même identifier les problèmes dans notre DNS.
$InputFile = 'C:\Temp\list.txt'
$addresses = Get-Content $InputFile
$reader = New-Object IO.StreamReader $InputFile
while ($reader.ReadLine() -ne $null) { $TotalIPs++ }
Write-Host ""
Write-Host "Performing nslookup on each address..."
foreach ($address in $addresses) {
## Progress bar
$i++
$percentdone = (($i/$TotalIPs) * 100)
$percentdonerounded = "{0:N0}" -f $percentdone
Write-Progress -Activity "Performing nslookups" -CurrentOperation "Working on IP: $address (IP $i of $TotalIPs)" -Status "$percentdonerounded% complete" -PercentComplete $percentdone
## End progress bar
try {
[System.Net.Dns]::Resolve($address) | Select HostName, AddressList
} catch {
Write-Host "$address was not found. $_" -ForegroundColor Green
}
}
Write-Host ""
Write-Host "Pinging each address..."
foreach($address in $addresses) {
## Progress bar
$j++
$percentdone2 = (($j/$TotalIPs) * 100)
$percentdonerounded2 = "{0:N0}" -f $percentdone2
Write-Progress -Activity "Performing pings" -CurrentOperation "Pinging IP: $address (IP $j of $TotalIPs)" -Status "$percentdonerounded2% complete" -PercentComplete $percentdone2
## End progress bar
if (Test-Connection -ComputerName $address -Count 2 -Quiet) {
Write-Host "$address responded" -ForegroundColor Green
} else {
Write-Warning "$address does not respond to pings"
}
}
Write-Host ""
Write-Host "Done!"
Je vous remercie pour la réponse. Mais je ne comprends pas entièrement ce qui se passe dans ce script. Certains d'entre eux je comprends, mais ... je suppose que je devrais jouer avec et voir ce qui se passe. –
Qu'est-ce que vous ne comprenez pas sur le code? Il lit les adresses du fichier d'entrée, résout chaque adresse en nom d'hôte et construit un objet personnalisé avec le nom d'hôte, les adresses et l'état en ligne, puis exporte les objets vers un fichier CSV. Les objets personnalisés sont ce que 'Export-Csv' attend en entrée. –
Ah je vois. Je ne suis pas familier avec PS. Désolé pour la réponse tardive. Merci beaucoup. –