Question Méthode contains : comment l'utiliser ? (Résolu)

Plus d'informations
il y a 14 ans 9 mois #1399 par TIti
Bonjour à vous,
J'ai honte ... mais je demande
Je ne comprends pas comment utiliser la méthode Contains

[code:1][string]$a=arp -a
### ou arp -a contient (entre autre) 00-13-72-f9-ef-90
[string]$b=(get-content c:\fichier.txt)
### ou fichier.txt contient 00-13
$b.Contains($a)
### le résultat est False[/code:1]
Et là ... l'échec ...
Pourquoi le résultat n'est il pas true ??
Merci pour votre aide

Message édité par: Berurier, à: 2/01/08 11:27<br><br>Message édité par: Arnaud, à: 8/01/08 17:21

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

Plus d'informations
il y a 14 ans 9 mois #1400 par Robin Lemesle
Réponse de Robin Lemesle sur le sujet Re:Méthode contains
Salut berrurier, et bonne année :)


En effet, ta syntaxe me semble correcte. Seulement la méthode \&quot;contains\&quot; va tester si ton fichier contient tout le contenu de $a (sans exception, et non pas juste l'adresse MAC), es-tu bien sur de vouloir faire cela ?

Si j'ai bien compris, tu devrais plutot faire un traitement sur la variable $a pour qu'elle se compose uniquement de l'adresse MAC !!!

Pour info : la methode \&quot;Contains\&quot; Retourne une valeur qui indique si (l'intégralité de) l'objet String spécifié apparaît dans cette chaîne.<br><br>Message édité par: robin, à: 2/01/08 12:22

Robin MVP PowerShell

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

Plus d'informations
il y a 14 ans 9 mois #1401 par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Méthode contains
En effet, il faut qu'au moins une des deux chaînes soit exactement la chaîne qu'on recherche:

[code:1]
PS&gt; $cherche = \&quot;an\&quot;
PS&gt; $dans = \&quot;bonne année\&quot;
PS&gt; $dans.contains($cherche)
True[/code:1]
En l'occurrence, ni $a ni $b ne contiennent uniquement l'adresse MAC. Il faut donc, comme suggéré par Robin, extraire cette adresse d'une des deux chaînes avant de pouvoir vérifier sa présence dans l'autre chaîne.

Si, comme indiqué dans le commentaire du code, le fichier ne contient qu'une partie de l'adresse (les 4 premiers caractères), c'est cette partie-là que j'extraierais pour ensuite vérifier si elle est présente dans $a. La façon de procéder pour extraire ce bout de chaîne dépend fortement de la structure de la chaîne. Donne-nous un ou plusieurs exemples si tu veux qu'on t'aide pour ça.

Bonne année,
Janel<br><br>Message édité par: janel, à: 2/01/08 13:45

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

Plus d'informations
il y a 14 ans 9 mois #1402 par TIti
Réponse de TIti sur le sujet Re:Méthode contains
Merci Janel et bonne année à toi aussi,

En fait, j'ai bien du mal à extraire proprement ma donnée.
Les objects WMI de type Network ne sont pas adaptés à la récupération des adresses mac (inutilisables sur les switchs par exemple). Je suis donc obligé d'utiliser la commande ARP -a.
Et là ... le drame !
Mais là, tu viens de m'expliquer comment utiliser proprement la méthode contains.

Donc ... je fais au mieux et je reviens ;)
Merci beaucoup !!

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

Plus d'informations
il y a 14 ans 9 mois #1412 par Jacques Barathon
Réponse de Jacques Barathon sur le sujet Re:Méthode contains
Si ça peut servir, voici un bout de code qui devrait te permettre d'exploiter au mieux les adresses retournées par arp -a :

[code:1]
$a = arp -a
$adresses = $a[3..($a.length-1)] | select @{n=\&quot;IP\&quot;;e={$_.substring(2,15)}}, @{n=\&quot;MAC\&quot;;e={$_.substring(24,17
)}}, @{n=\&quot;Type\&quot;;e={$_.substring(46)}}
[/code:1]
Tu peux ensuite utiliser le tableau $adresses pour, par exemple, faire une recherche sur les adresses MAC qui correspondent à un motif particulier :

[code:1]
$adresses | where {$_.MAC -match \&quot;01-00\&quot;}

IP MAC Type
-- --- ----
224.0.0.22 01-00-5e-00-00-16 static
224.0.0.252 01-00-5e-00-00-fc static
239.255.255.250 01-00-5e-7f-ff-fa static
[/code:1]
A partir de là, il te reste à isoler le bout d'adresse MAC dans fichier.txt pour pouvoir faire la recherche qui t'intéresse.

Janel

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

Plus d'informations
il y a 14 ans 9 mois #1420 par TIti
Réponse de TIti sur le sujet Re:Méthode contains
Bonjour et merci,

Oui, ça va servir ;)
J'avais beau chercher, je ne trouvais pas la solution.
Donc ... merci encore pour le coup de main !
Beru

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

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