Question [Résolu] Mauvais usage de la méthode Split()

Plus d'informations
il y a 16 ans 5 mois #5805 par Gabriel
Récement Arnaud m'a montré comment correctement me servir de la fonction .split().

j'arrive a m'en servir tant que j'ai une string simple...

Mais je bloque dans son usage avec des objets ramené de l'ad.
Je cherche a générer un CSV avec tout les utilisateur de l'AD et leur adresse SIP (Office communicator) le champs \"msrtcsip-primaryuseraddress\" contient pour chaque utilisateur \"sip:prenom.nom@toto.com\".
Dans le CSV j'aurais souhaité que \"sip:\" ne soit pas mis.
Pour tout ça j'ai recuperer une fonction[code:1]function func_All_AD_Users()
{
#runs against default AD server

$ADQuery =
{
$searcher= New-Object directoryServices.DirectorySearcher([adsi]('GC://'+([adsi]'LDAP://RootDse').RootDomainNamingContext) )
$searcher.filter=\"(&(objectCategory=person)(objectClass=user))\"
#$searcher.filter=\"(&(objectClass=user))\"
#$searcher.filter=\"(msrtcsip-userenabled=true)\"
$searcher.Findall()
}

&$ADQuery | select-object @{Name=\"Distinguished Name\"; Expression = {$_.Properties.item(\"distinguishedname\"«»)}},
@{Name=\"Name\"; Expression = {$_.Properties.item(\"cn\"«»)}},
@{Name=\"SIP Enabled\"; Expression = {$_.Properties.item(\"msrtcsip-userenabled\"«»)}},
@{Name=\"PrimarySIP\"; Expression = {$_.Properties.item(\"msrtcsip-primaryuseraddress\"«»).split(':')[1]}},
@{Name=\"Email\"; Expression = {$_.Properties.item(\"Mail\"«»)}}
@{Name=\"Userid\"; Expression = {$_.Properties.item(\"sAMAccountName\"«»)}}
}

func_All_AD_Users | where { $_.\"SIP Enabled\" -eq '$True' } | Select-Object \"Name\" , \"Primary SIP\" | Export-CSV -Path $fichierEnSortie -Force
[/code:1]

mon probleme j'ai un message d'erreur, a cause du split que j'ai rajouté sur la ligne [code:1] @{Name=\"PrimarySIP\"; Expression = {$_.Properties.item(\"msrtcsip-primaryuseraddress\"«»).split(':')[1]}},
[/code:1]
le message d'erreur
[code:1]Select-Object : Method invocation failed because [System.DirectoryServices.ResultPropertyValueCollection] doesn't conta
in a method named 'split'.
At C:\Temp\import\generate-CSVSIPContacts.ps1:57 char:28
+ &$ADQuery | select-object <<<< @{Name=\"Distinguished Name\"; Expression = {$_.Properties.item(\"distinguishedname\"«»)}
},
+ CategoryInfo : InvalidResult: (System.DirectoryServices.SearchResult:«»PSObject) [Select-Object], Runtime
Exception
+ FullyQualifiedErrorId : PropertyEvaluationNoExpand,Microsoft.PowerShell.Commands.SelectObjectCommand[/code:1]

Comment dois-je m'y prendre pour utiliser corretement split...? :blush:
Merci d'avance

Message édité par: tonic8, à: 22/12/09 14:09<br><br>Message édité par: Arnaud, à: 30/12/09 18:44

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

Plus d'informations
il y a 16 ans 5 mois #5806 par xyz
Réponse de xyz sur le sujet Re:mauvais usage de la fonction split
tonic8 écrit:

Comment dois-je m'y prendre pour utiliser correctement split...?

Il faut déjà interpréter le message d'erreur qui te dit que la classe [System.DirectoryServices.ResultPropertyValueCollection] ne contient pas la méthode Split (ça c'est facile :P )
Déjà regarder sur MSDN qu'est-ce que cette classe.
On y lit que c'est une collection, donc accéder à un de ses éléments est un bon début.
Ensuite tu cherches à récupérer une partie d'un objet en un type String, il faut donc soit transformer l'objet en une chaîne ou accéder à un propriété de type chaîne de cet objet.
Essaie qq chose comme :
[code:1]($_.Properties.item(\&quot;msrtcsip-primaryuseraddress\&quot;«»)).PROPERTY.split(':')[1]
#ou
$item=$_.Properties.item(\&quot;msrtcsip-primaryuseraddress\&quot;«»)
$Item.PROPERTY.split(':')[1]
[/code:1]
Mais il faut déjà connaitre quel est le type de l'objet que la méthode item renvoi, pour trouver la propriété à utiliser...

Ce n'est pas une solution, plutot une approche pour comprendre ce qui se passe et s'orienter vers une solution.<br><br>Message édité par: Laurent Dardenne, à: 18/12/09 20:10

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5829 par Gabriel
Alors j'ai triché :whistle: , je l'ai fait autrement ... vu que j'ai un peu tester dans tous les sens en incluant .toString() ou du [string] sans grand succes... (surtout en faisant des tentative sans vraiment comprendre. :blush:

Le resulstat est [code:1]

$fichierCSV=.\toto.csv

function coupe($s) {$s.split(\&quot;:\&quot;«»)[1]}

get-QADUser -SearchRoot \&quot;$OU\&quot; -IncludeAllProperties |
where { $_.\&quot;msrtcsip-userenabled\&quot; -eq \&quot;$True\&quot;} |
select-object name,\&quot;msrtcsip-primaryuseraddress\&quot; |
foreach {
$_.\&quot;msRTCSIP-PrimaryUserAddress\&quot;= coupe $_.\&quot;msRTCSIP-PrimaryUserAddress\&quot;
$_
} |
# Sort-Object -Property name |
export-csv $fichierCSV -noTypeInformation -Force -Encoding Unicode
[/code:1]

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

Plus d'informations
il y a 16 ans 4 mois #5830 par xyz
Réponse de xyz sur le sujet Re:mauvais usage de la fonction split
tonic8 écrit:

Alors j'ai triché

Cela ce n'est pas gênant, en revanche ça
[code:1]where { $_.\&quot;msrtcsip-userenabled\&quot; -eq \&quot;$True\&quot;} [/code:1]
\&quot;ça me pique les yeux\&quot; :blink:
Soit tu traites un booléen soit une string, mais un mixte des deux ce n'est pas maintenable.
tonic8 écrit:

surtout en faisant des tentatives sans vraiment comprendre.

Le pb est plutot là, en gros ça tombe en marche. C'est aussi possible de procéder ainsi, mais tu ne résouds pas le problème, tu repousses sa compréhension. Mais il reste là, tapis dans l'ombre, prêt à bondir !
Ha la sale bête :lol:

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 4 mois #5836 par Gabriel

\&quot;ça me pique les yeux\&quot;
Soit tu traites un booléen soit une string, mais un mixte des deux ce n'est pas maintenable


hihi, c'est la seule facon que j'ai trouvé pour contourné le problème du \&quot;-\&quot; dans \&quot;msrtcsip-userenabled\&quot;. La totalité des champs AD ne contient pas de -, sauf dans Office Communicator qui modifie le schéma de l'ad en rajoutant des champs avec \&quot;-\&quot; (a ma connaissance) en mettant les \&quot;\&quot; Powershell interprete le champs AD correctement sinon il bloque au \&quot;-\&quot;...

Et je sais que le probleme reste tapis dans l'ombre prèt a surgir. j'aurais peut etre un peu plus de temps a lui consacrer... pour lui faire sa fête...

en parlant de fêtes... Bonnes fêtes de fin d'année

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

Plus d'informations
il y a 16 ans 4 mois #5838 par xyz
Réponse de xyz sur le sujet Re:mauvais usage de la fonction split
tonic8 écrit:

en parlant de fêtes... Bonnes fêtes de fin d'année

Merci, à toi aussi.

Tutoriels PowerShell

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

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