Question Conversion de format String en Array

Plus d'informations
il y a 16 ans 3 semaines #6252 par Seals
Hello,

J'ai un petit souci de conversion. Je charge un groupe AD. J'en extrais les membres $Group.member .
J'en obtient une liste (distinguishedName) que j'aimerai convertir en Array pour pouvoir bénéficier des méthodes SystemArray notamment equals() / existe() et getEnumerator().
Ceci pour comparer deux groupes AD et d’en sortir les doublons. Le but est ici de le faire en pur .Net et pas à la sauce batch.
[code:1]
$tableau = New-Object System.Collections.ArrayList
$tableau = $Group.member
[/code:1]
Ceci ne fonctionne pas car $tableau est converti en System.String. Mais le plus bizarre est que le code ci-dessous fonctionne ??
[code:1]
for ($i=1; $i -lt $tableau.length; $i++) {
$tableau[$i] | Out-Host
}
[/code:1]

Qui pourrait m’aider, ou orienter mes recherches ?

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

Plus d'informations
il y a 16 ans 3 semaines #6254 par Vara
Bonjour,

Il faut que tu force le type de variable en tableau.
Si tu as qu'un membre dans ton groupe le type de variable est un string.

[code:1]
[array]$tableau = $Group.member
[/code:1]

Dans ce cas même s'il n'y a qu'un élément la variable est un tableau.

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

Plus d'informations
il y a 16 ans 3 semaines #6255 par Seals
Bhein non, malgré le faite de le forcer, il est converti :

[code:1]
$tableau |Get-Member

TypeName: System.String

Name MemberType Definition
----

Clone Method System.Object Clone()
....
[/code:1]

Merci.

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

Plus d'informations
il y a 16 ans 3 semaines #6258 par Laurent Dardenne
Seals écrit:

Mais le plus bizarre est que le code ci-dessous fonctionne

L'affichage appel ToString() sur les éléments de la collection ciblée, identique à l'appel du cmdlet Out-String.
Quelle est le type de ta collection ?
Sinon le type d'un tableau de string est [string[]].<br><br>Message édité par: Laurent Dardenne, à: 25/02/10 20:32

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 3 semaines #6259 par Seals
[code:1]$ADSIGroup1 = [ADSI]\&quot;LDAP://CN=[/code:1]
Je recupère un TypeName:
System.DirectoryServices.DirectoryEntry
et quand j'appelle la Property member je récupère un TypeName: System.String

Sinon, voici mon code qui ne fonctionne pas en System.String

[code:1]
$group1 = $ADSIGroup1.member
$group2 = $ADSIGroup2.member

for ($i=0; $i -lt $group1.count; $i++) {

for ($j=0; $j -lt $group2.count; $j++) {

if ( $group1[$i] -match $group2[$j] ){

$group2[$j].remove( 0, $group2[$j].length )

}
}
}[/code:1]

Du coup je cherche a mettre dans une Array pour avoir les methodes qui me permette de le faire plus simplement(?).

Merci.

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

Plus d'informations
il y a 16 ans 3 semaines #6262 par Laurent Dardenne
N'ayant pas d'AD sous la main, cela m'est difficile de t'aider, bien qu'il me semble que ce pb soit simple à résoudre.
D'après ce code ,peux-tu utiliser un énumérateur sur l'objet récupéré ?
A noter que la classe System.DirectoryServices.DirectoryEntry ne posséde pas de membre nommé Member

Tutoriels PowerShell

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

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