Question Traitement d'une classe

Plus d'informations
il y a 5 ans 11 mois #18179 par Polux17
Traitement d'une classe a été créé par Polux17
Tout d'abord, bonjour à tous,


Après plusieurs recherches infructueuses, je me décide à ouvrir un post afin de pouvoir solutionner mon problème.

J'ai découvert, il y a quelques mois la puissance du powershell mais là, la puissance me dépasse....:sick:


J'essaie de réaliser ce genre de script mais sans résultat car je ne sais pas vers quel objet m'orienter.
Mais je pense que vous devriez traiter le problème sans grande difficulté.

AdresseIP1 : xxx.xxx.xxx.xxx
Interface1 : TOTO

AdresseIP2 : xxx.xxx.xxx.xxx
Interface2 : TITI

AdresseIP3 : xxx.xxx.xxx.xxx
Interface3 : TATA

et ainsi de suite....

J'aimerais créer une classe avec :
$adresseIP(0) et $interface(0)

et pouvoir ainsi traiter toute la liste dans une boucle for ($i=0; $i -le $compteur.Length-1 ; $i++)

Je sais réaliser cette manipulation en vbs mais en powershell, je sèche complètement


Merci d'avance pour votre aide.

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

Plus d'informations
il y a 5 ans 11 mois #18181 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Traitement d'une classe
Salut,
Tu peux utiliser New-Object qui crée des objets personnalisés et pas des classes (dispo à partir de la v5).
Le principe :
[code:1]
$Objet=New-Object PsObject -Property @{
AdresseIP = '9.8.7.6';
Interface = 'TOTO'
}
$Objet
#ou
$IP='1.2.3.4'
$Name='Toto'
$Objet=New-Object PsObject -Property @{
AdresseIP = $IP;
Interface = $Name
}
$Objet
[/code:1]
Les noms de propriétés doivent être identiques pour tous les objets de même 'type', sinon tu ne pourras utiliser simplement les cmdlets.
Outre son adresse mémoire, c'est le contenu d'une propriété qui différencie des objets d'une même classe.<br><br>Message édité par: Laurent Dardenne, à: 30/09/14 23:04

Tutoriels PowerShell

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

Plus d'informations
il y a 5 ans 11 mois #18183 par Polux17
Réponse de Polux17 sur le sujet Re:Traitement d'une classe
Merci pour cette réponse rapide.

Mais à vrai dire, c'est la syntaxe qui suit qui me pose problème.

Je crée mon objet :
[code:1]
$Objet=New-Object PsObject -Property @{
AdresseIP = '9.8.7.6';
Interface = 'TOTO'
}
$Objet
[/code:1]

Mais pour les suivants? Je réécris la même chose?
[code:1]
$Objet=New-Object PsObject -Property @{
AdresseIP = '5.9.3.2';
Interface = 'TUTU'
}
$Objet

$Objet=New-Object PsObject -Property @{
AdresseIP = '6.5.3.5';
Interface = 'TITI'
}
$Objet

[/code:1]

Et une fois que j'ai mes objets de créer, Comment, je réalise ma boucle for qui me permet de traiter tous mes objets?

[code:1]
for ($Objet=1; i -le X; i++)
{
Write-host $AdresseIP($i)
}

[/code:1]


Merci d'avance

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

Plus d'informations
il y a 5 ans 11 mois #18184 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:Traitement d'une classe
Polux17 écrit:

Mais pour les suivants? Je réécris la même chose?

Oui, mais tu dois également construire une collection qui contiendra tous tes objets :
[code:1]
#Crée un tableau vide
$Objets=@()
#ajoute un élément du tableau
$Objets +=New-Object PsObject -Property @{
AdresseIP = '5.9.3.2';
Interface = 'TUTU'
}
#premier objet, index 0
$Objets[0]

$Objets +=New-Object PsObject -Property @{
AdresseIP = '6.5.3.5';
Interface = 'TITI'
}
$Objets[1]
$Objets[1].AdresseIP
#Nombre d'élément contenu dans le tableau
$Objets.Count
$Objets
[/code:1]
Mais ici les données servant à construire ta liste d'objets proviennent le plus souvent d'un fichier ascii, .CSV , .XML, etc.

Ensuite :
[code:1]
#Parcourt la collection sans calcul d'index
foreach ($Objet in $Objets)
{
Write-host $Objet.AdresseIP
}
[/code:1]

Tutoriels PowerShell

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

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