Script pour récupérer la configuration réseaux de plusieurs

Fermé
infogame - 6 mars 2023 à 15:40
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 - 7 mars 2023 à 20:07

Bonjour,


j'aimerais faire un script qui me permettrait de récupéré dans un fichier  teste les adresse Dns primaire er secondaire du plusieurs poste
les poste dont je voudrais récupérer leur configurations sont dans un fichier texte qui se nomme : liste.txt

merci pour votre aide


Windows / Chrome 110.0.0.0

3 réponses

brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 814
6 mars 2023 à 17:25

Bonjour,

Tout sauf trivial...

On suppose que cette liste contient les noms réseau des ordinateurs en question sur lesquels on dispose des droits appropriés.

Une solution en PowerShell, voir le dernier exemple et dont il me suffit de rediriger les résultats vers un fichier plutôt que vers la console:
https://4sysops.com/archives/get-dns-server-ips-using-powershell/

0

bonjour , 

Merci pour votre réponse .

J'ai bien utilisé le dernier exemple ( Obtenir-Contenu c:\scripts\comps.txt | .\Get-DNSServers.ps1)    mais cela n'a pas fonctionner . 

le script Get-DNSServers.ps1 doit récupérer le nom des poste qui sont dans le fichier comps.txt.   je n'ai pas réussi a adapter le script pour qu'il puisse le faire . 

Merci 

0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083 > infogame
7 mars 2023 à 10:53

et si au lieu de taper "Obtenir-Contenu" tu tapes "Get-Content" comme le mentionne la page ?

0
infogame > [Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024
7 mars 2023 à 11:02

Oui c'est ce que j'ai mis mais cela ne fonctionne pas . 

0
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 814
7 mars 2023 à 11:44

Autoriser l'exécution de scripts PowerShell qui sous Windows ne l'est pas par défaut:

Dans la console PowerShell saisir:

set-executionpolicy unrestricted

et valider par O pour enregistrer.

Supposant que le contenu du script en ligne ait été copié dans le bloc notes sur le bureau puis enregistré sous la syntaxe exacte Get-DNSServers.ps1, quand j'ouvre la console PowerShell, le chemin par défaut est
PS C:\Users\brucine>, ce qui est sur le bureau est donc inconnu.

Aller sur le bureau en saisissant:

cd desktop

Maintenant, la syntaxe

 Get-Content c:\users\brucine\desktop\comps.txt | .\Get-DNSServers.ps1 >> C:\users\brucine\desktop\testdns.txt

me ramène correctement les informations dans le fichier testdns.txt sur le bureau, mais dans leur ensemble (je n'ai pas allumé ma Raspberry en réseau local, je n'ai qu'un résultat, le fichier comps.txt ne renferme qu'une ligne brucine):
 

ComputerName        : BRUCINE
PrimaryDNSServers   : 1.1.1.1
SecondaryDNSServers : 1.0.0.1
IsDHCPEnabled       : 
NetworkName         : Realtek PCIe GbE Family Controller

ComputerName        : BRUCINE
PrimaryDNSServers   : Notset
SecondaryDNSServers : Notset
IsDHCPEnabled       : 
NetworkName         : VMware Virtual Ethernet Adapter for VMnet1

ComputerName        : BRUCINE
PrimaryDNSServers   : Notset
SecondaryDNSServers : Notset
IsDHCPEnabled       : 
NetworkName         : VMware Virtual Ethernet Adapter for VMnet8


Si je ne veux que le nom des PC et les serveurs DNS existants, ça va être plus compliqué: à partir de ce texte, je vais devoir boucler sur les 2 colonnes.

Une syntaxe FOR avec des tokens 1 et 2 , séparateur : va le séparer en variables, et je vais tester si la deuxième variable vaut "Notset"; dans le cas contraire, je vais chercher dans la variable 1 les chaînes "ComputerName", "PrimaryDNSServers" et "SecondaryDNSServers" que j'afficherai en compagnie de la variable 2 correspondante.





 

0

merci pour réponse .

En effet lorsque j'autorise l'exécution du script PowerShell ça fonctionne mais uniquement pour mon ordinateur local . 

Lorsque je fais la commande :

Get-content C:\Users\nameuser\Desktop\liste.txt | .\Get-DNSServers.ps1

j'ai le message d'erreur suivant : 

Test-Connection : Impossible de valider l'argument sur le paramètre «ComputerName». L’argument est Null ou vide.
Indiquez un argument qui n’est pas Null ou vide et réessayez.
Au caractère C:\Users\nameuser\Desktop\liste.txt | .\Get-DNSServers.ps1:31 : 34
+ if(Test-Connection -ComputerName $Computer -Count 1 -ea 0)
+                                  ~~~~~~~~~
    + CategoryInfo          : InvalidData : (:) [Test-Connection], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.PowerShell.Commands.TestConnectionCommand

le fichier ( liste.txt ) comporte les noms des ordinateurs distants 

merci

0
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 814
7 mars 2023 à 14:14

Je n'ai pas de PC distant pour tester (enfin si, mais pas Windows, même pas la peine d'essayer et des machines virtuelles qui n'ont pas de DNS et qui sont "bridged", je vais tester à tout hasard), je ne sais pas si la commande dans le fichier texte est PC1, PC... (comme dans la ligne de commande de l'exemple) ou à la ligne entre chaque.

Attention, il y a un espace de chaque côté du pipe: liste.txt  |  .\Get

0
brucine Messages postés 14320 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 26 avril 2024 1 814
7 mars 2023 à 20:07

Moralité, j'ai attribué à ma machine virtuelle Windows 7 une ip fixe et des dns, ça pinge positif.

J'ai extirpé les commandes pertinentes du script PowerShell, j'en ai essayé d'autres: il n'y a aucun moyen, hors contrôleur de domaine (pour lequel le script a probablement été écrit) de récupérer le dns secondaire
(via nslookup nompc, le primaire sort), le script marche donc parfaitement en local mais est foireux en ce qui nous intéresse.

J'ai trouvé une astuce via PsExec, Sysinternals, https://learn.microsoft.com/en-us/sysinternals/downloads/psexec

Il va me suffire après avoir extrait les utilitaires de copier PsExec.exe sous le path (par exemple C:\Windows\System32) si je ne veux pas avoir à le spécifier, puis d'entrer à la ligne de commande:

psexec -i \\nompc ipconfig /all (à rediriger éventuellement vers un fichier texte >> (chemin local))ip.txt

Je n'aurai aucune difficulté à en extraire les dns et la messe est dite; le hic, c'est que mon poste Windows 7 me jette avec des autorisations d'accès, le temps que je trouve le bug, je t'invite à tester sur un de tes postes réseau.

Si la réponse est positive, je te ferai un batch pour boucler si psexec supporte une variable (simple à vérifier, écrire:

set nom=nompc

psexec -i \\%nom% ....)

entrer les différents noms sinon et extraire les données souhaitées.
 

0