web-dev-qa-db-fra.com

Envoyez une requête ping à une liste de noms d’hôtes et exportez les résultats vers un fichier csv dans powershell.

J'ai une longue liste de noms d'hôte que je dois interroger pour savoir s'ils sont actifs ou non. Je ne suis pas très bon en script mais j'ai réussi à comprendre ça:

$names = Get-content "hnames.txt"

foreach ($name in $names){
  if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
    Write-Host "$name is up" -ForegroundColor Green
  }
  else{
    Write-Host "$name is down" -ForegroundColor Red
  }
}

Cela me donne ce dont j'ai besoin, mais je dois maintenant écrire ces résultats dans un fichier csv et je ne sais pas comment faire.

S'il vous plaît aider!

3
Harry Singh

Vous pouvez utiliser le code suivant à la place (j'ai simplement modifié les appels write-Host au format CSV) et l'exécuter avec "PowerShell.exe script.ps> output.csv" Notez que vous devez l'exécuter à partir du dossier qui contient hnames.txt ou remplacez simplement le "hnames.txt" par un chemin complet.

$names = Get-content "hnames.txt"

foreach ($name in $names){
  if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
    Write-Host "$name,up"
  }
  else{
    Write-Host "$name,down"
  }
}

P.S. Vous pouvez également utiliser la cmdlet Out-File pour créer le fichier CSV.

7
Erez breiman

Je suis un débutant complet chez Powershell, alors j’ai pris cette tâche comme une tâche d’apprentissage, car j’avais besoin d’un moyen simple et rapide pour consulter la liste des ordinateurs en ce qui concerne l’état de la situation. Ces ajustements étaient nécessaires pour l’afficher correctement à l’écran et dans un fichier txt

$Output= @()
$names = Get-content "hnames.txt"
foreach ($name in $names){
  if (Test-Connection -ComputerName $name -Count 1 -ErrorAction SilentlyContinue){
   $Output+= "$name,up"
   Write-Host "$Name,up"
  }
  else{
    $Output+= "$name,down"
    Write-Host "$Name,down"
  }
}
$Output | Out-file "C:\support\result.csv"
1
Mitch