Script pour récupérer la configuration réseaux de plusieurs
Fermébrucine Messages postés 17779 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 20 novembre 2024 - 7 mars 2023 à 20:07
- Parameterbindingvalidationexception
- Ethernet n'a pas de configuration ip valide - Guide
- Script vidéo youtube - Guide
- Recuperer video youtube - Guide
- Recuperer message whatsapp supprimé - Guide
- Panneau de configuration - Guide
3 réponses
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/
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.
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
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
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.
7 mars 2023 à 10:15
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
7 mars 2023 à 10:53
et si au lieu de taper "Obtenir-Contenu" tu tapes "Get-Content" comme le mentionne la page ?
7 mars 2023 à 11:02
Oui c'est ce que j'ai mis mais cela ne fonctionne pas .