Question Extraction réservation DHCP - tri par ipaddress

Plus d'informations
il y a 10 ans 3 mois #21177 par Jacquemin
Bonjour,
Un truc qui parait simple un tri sur l'object Ipaddress concernant les réservations d'un serveur DHCP

J'utilise la commande :
Get-DhcpServerv4Reservation -ComputerName bonServeur -ScopeId 192.168.0.0 | sort-object Ipaddress

J'ai comme résultat :
192.168.0.1
192.168.0.10
192.168.0.2
....

au lieu de :
192.168.0.1
192.168.0.2
192.168.0.10
....

Beaucoup de tests en utilisant address.ipaddressToString pour forcer le type IP ou encore \"{0:d3}.{1:d3}.{2:d3}.{3:d3}\" pour le formatage
de type 192.168.000.001 soit 2 approches différentes mais .... je galère.

Le tri dans le 1er cas semble se faire sur du string et dans le 2ème cas le formatage se fait bien un fichier simple :-( mais pas avec le fichier complet récupéré de l'extraction.

Merci de votre aide car je ne sais plus quoi faire !

JCJ

Message édité par: JCJ, à: 7/12/15 15:25<br><br>Message édité par: JCJ, à: 7/12/15 15:26

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

Plus d'informations
il y a 10 ans 3 mois #21180 par Laurent Dardenne
Salut,
JCJ écrit:

mais pas avec le fichier complet récupéré de l'extraction.

le type de l'objet renvoyé par le cmdlet contient bien un champ de type string, pour le tri il faut effectivement le caster en IPAddress.

L'adaptation de 1 en '001' est juste pour la visualisation (formatage).
Sans le fichier sous les yeux ni la manière de le générer il est difficile de t'aider, vérifie sa structure et son encodage.

Tutoriels PowerShell

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

Plus d'informations
il y a 10 ans 3 mois #21181 par Jacquemin
Merci de ton retour.
J'ai progressé mais c'est pas tout à fait ce que je souhaite.
Je vais essayer d'être plus précis :

Le détail du script qui me permet maintenant d'avoir un tri IP correct mais seul comme champ.
Je suis passé par la création d'un tableau temporaire qui caste en Ipaddress

Mais j'aimerais récuperer également le \&quot;name\&quot; et je coince !!!


&amp;#65279;clear

# format tableau apres Get-DhcpServerv4Reservation -ScopeId 192.168.27.0 | Export-Csv list.csv
#
#\&quot;IP\&quot;,\&quot;ScopeId\&quot;,\&quot;AddressState\&quot;,\&quot;ClientId\&quot;,\&quot;Description\&quot;,\&quot;Name\&quot;,\&quot;Type\&quot;,\&quot;PSComputerName\&quot;
#\&quot;192.168.27.38\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;00-1F-FF-FF-65-87\&quot;,\&quot;2\&quot;,\&quot;machine1\&quot;,\&quot;Dhcp\&quot;,
#\&quot;192.168.27.3\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;00-24-e8-2d-FF-FF\&quot;,\&quot;3\&quot;,\&quot;machine2\&quot;,\&quot;Dhcp\&quot;,
#\&quot;192.168.27.111\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;FF-FF-19-27-18-b6\&quot;,\&quot;213\&quot;,\&quot;machine3\&quot;,\&quot;Dhcp\&quot;,
#\&quot;192.168.27.5\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;d0-67-eF-FF-95-3a\&quot;,\&quot;3\&quot;,\&quot;machine4\&quot;,\&quot;Dhcp\&quot;

$result = ipcsv .\liste.csv

$tableau = @()

foreach ($reservation in $result) {
$adresseIP = $reservation.ip
$adresseIP = [ipaddress]$adresseIP.trim()
$tableau += $adresseIP
}

$tableau | Sort-Object address |Format-Table IPaddressTostring

# Resultat
# 192.168.27.3
# 192.168.27.5
# 192.168.27.38
# 192.168.27.111

# Le classement est bon ! reste à trouver la soluce pour integrer le Name du tableau initial... pour un #resultat de type :
# 192.168.27.3,machine2
# 192.168.27.5,machine4
# 192.168.27.38,machine1
# 192.168.27.111,machine3<br><br>Message édité par: JCJ, à: 7/12/15 20:23

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

Plus d'informations
il y a 10 ans 3 mois #21182 par Jacquemin
La persévérance finit par par payer !

le script ok mais je suis sur qu'il y a plus simple

&amp;#65279;clear

# format tableau apres Get-DhcpServerv4Reservation -ScopeId 192.168.27.0 | Export-Csv list.csv
#
#\&quot;IP\&quot;,\&quot;ScopeId\&quot;,\&quot;AddressState\&quot;,\&quot;ClientId\&quot;,\&quot;Description\&quot;,\&quot;Name\&quot;,\&quot;Type\&quot;,\&quot;PSComputerName\&quot;
#\&quot;192.168.27.38\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;00-1F-FF-FF-65-87\&quot;,\&quot;2\&quot;,\&quot;machine1\&quot;,\&quot;Dhcp\&quot;,
#\&quot;192.168.27.3\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;00-24-e8-2d-FF-FF\&quot;,\&quot;3\&quot;,\&quot;machine2\&quot;,\&quot;Dhcp\&quot;,
#\&quot;192.168.27.111\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;FF-FF-19-27-18-b6\&quot;,\&quot;213\&quot;,\&quot;machine3\&quot;,\&quot;Dhcp\&quot;,
#\&quot;192.168.27.5\&quot;,\&quot;192.168.27.0\&quot;,\&quot;ActiveReservation\&quot;,\&quot;d0-67-eF-FF-95-3a\&quot;,\&quot;3\&quot;,\&quot;machine4\&quot;,\&quot;Dhcp\&quot;

$result = ipcsv .\liste.csv

$tableau = @()

foreach ($reservation in $result) {

$adresseIP = $reservation.IP

$adresseIP = $adresseIP -split ','
[int[]] $t=($adresseIP -split \&quot;\.\&quot;)
$NadresseIP=\&quot;$(\&quot;{0:d3}.{1:d3}.{2:d3}.{3:d3}\&quot; -F $t[0],$t[1],$t[2],$t[3])\&quot;

$ligne = New-Object psobject
$ligne | Add-Member -name IP -MemberType NoteProperty -Value $NadresseIP
$ligne | Add-Member -name NOM -MemberType NoteProperty -Value $reservation.Name

$tableau += $ligne
}


$tableau | Sort-Object IP | Format-Table -AutoSize

#| Export-Csv reservations.csv si nécessaire

# Le classement est bon !

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

Plus d'informations
il y a 10 ans 3 mois #21188 par Laurent Dardenne
JCJ écrit:

La persévérance finit par par payer !

hé oui, y a pas de secret :)
JCJ écrit:

le script ok mais je suis sur qu'il y a plus simple

Pour le moment cela me semble suffisant, un select-object ferait aussi l'affaire.
Par contre ceci est à éviter :
[code:1] $tableau += $ligne[/code:1]
car tu reconstruis un nouvel objet tableau à chaque itération, un arraylist ou un autre type de collection évite ce pb.

Et pour :
[code:1]$ligne = New-Object psobject [/code:1]
ligne est un objet, la ligne n'existe que dans le fichier. Certes c'est un détail :P

Tutoriels PowerShell

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

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