Question Récupération d'information carte réseau des PC d'une entreprise

Plus d'informations
il y a 3 ans 5 mois #30174 par BONTEMPS
Bonjour,
En tant que nouveau dans le script powershell, j'aurais besoin de votre aide pour réaliser une opération sur tous les postes du réseau de ma collectivité.
Les postes sont connectés à un domaine disposant de controleurs de domaine et de serveur DHCP et je souhaiterais changer l'adresse IPv4 fixe en DHCP des postes utilisateurs

Pour cela, je souhaiterais collecter au démarrage du poste les informations suivantes :
nom de la machine
interfaceAlias
interfaceIndex
de chacune de mes machines dans un fichier TXT ou CSV.
Ensuite, à partir de ce fichier, je souhaiterais changer les postes ayant une IP Fixe en DHCP (DNS également).

Je vous remercie pour votre aide.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 5 mois #30180 par Arnaud Petitjean
Bonjour,

Sois le bienvenu dans notre communauté PowerShell francophone !
Peut-être pourrais-tu faire un détour par le Forum "Bistrot" pour te présenter rapidement ? Merci ;-)

Alors, pour répondre à ta question, ce n'est pas très compliqué mais ça peut l'être si tu n'es pas un minimum expérimenté...

Ce dont tu vas avoir besoin pour résoudre ta problématique c'est de la classe WMI Win32_NetworkAdapterConfiguration

Celle-ci te permettra de modifier la configuration réseau d'une machine (IP Fixe=>DHCP ou inversement, config DNS, etc.).

Je ne sais pas si tu as de l'expérience avec WMI mais il n'y a rien de sorcier une fois que tu as trouvé la classe d'objets à manipuler. En lisant la document Microsoft (voir lien précédemment) tu verras que tu vas pouvoir utiliser la méthode EnableDHCP

Je te montre un petit exemple sur mon PC, pour le passer en DHCP depuis une IP fixe:
# Récupération des infos réseau de tous mes adaptateurs réseaux
PS > Get-WmiObject -Class Win32_NetworkAdapterConfiguration

DHCPEnabled      : True
IPAddress        :
DefaultIPGateway :
DNSDomain        :
ServiceName      : kdnic
Description      : Microsoft Kernel Debug Network Adapter
Index            : 0

DHCPEnabled      : False
IPAddress        :
DefaultIPGateway :
DNSDomain        :
ServiceName      : VMSMP
Description      : Hyper-V Virtual Switch Extension Adapter
Index            : 1

DHCPEnabled      : False
IPAddress        : {172.22.32.1, fe80::28f0:7e7:fd2e:5487}
DefaultIPGateway :
DNSDomain        :
ServiceName      : VMSNPXYMP
Description      : Hyper-V Virtual Ethernet Adapter
Index            : 2

DHCPEnabled      : True
IPAddress        : {10.211.55.3, fe80::b856:2655:8c0b:23c0}
DefaultIPGateway : {10.211.55.1}
DNSDomain        : localdomain
ServiceName      : e1i65x64
Description      : Intel(R) 82574L Gigabit Network Connection #2
Index            : 3

DHCPEnabled      : False
IPAddress        :
DefaultIPGateway :
DNSDomain        :
ServiceName      : RasSstp
Description      : WAN Miniport (SSTP)
Index            : 4

...

# Une fois trouvé celui qui m'intéresse, je l'isole afin de travailler sur cet objet uniquement
PS > Get-WmiObject -Class Win32_NetworkAdapterConfiguration | where {$_.DNSDomain -eq 'localdomain'}

DHCPEnabled      : True
IPAddress        : {10.211.55.3, fe80::b856:2655:8c0b:23c0}
DefaultIPGateway : {10.211.55.1}
DNSDomain        : localdomain
ServiceName      : e1i65x64
Description      : Intel(R) 82574L Gigabit Network Connection #2
Index            : 3

# A présent je peux manipuler les méthodes de cet objet
# Je vais donc faire appel à la méthode EnableDHCP

PS > $myPC.EnableDHCP()

Bon, en réalité ma machine est déjà en DHCP mais ça fonctionnerait de la même façon si elle était en IP fixe.

Dans ton cas de figure je ne sais pas si ça vaut la peine de faire la manip en 2 temps, à savoir la collecte puis le changement.
Tu pourrais très bien le faire en une seule fois. En gros, je regarde si la machine est en IP fixe. Si c'est le cas j'appelle la méthode EnableDHCP. Et le tour est joué.

Bien sûr tu n'oublies pas d'écrire un petit fichier de logs bien structuré et voilà !
Et si tu cherches un module pour écrire des logs, je te propose celui que j'ai écrit et qui s'appelle EZLog .
Il est sur la PowerShell Gallery. Donc pour l'installer, rien de plus facile :
Find-Module -Name EZLog | Install-Module

Arnaud
PS : A noter que la commande Get-WMIObject est dépréciée (mais elle est toujours bien pratique je trouve). Pour respecter les "Best Practices" il aurait fallu utiliser Get-CimClass et Invoke-CIMMethod
A noter également qu'avec WMI/CIM tu peux effectuer ces modifications à distance depuis ton poste d'administration.

MVP PowerShell et créateur de ce magnifique forum :-)
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.085 secondes
Propulsé par Kunena