Question Formatage d'un numéro de téléphone

Plus d'informations
il y a 1 an 1 mois - il y a 1 an 1 mois #33012 par Fontaine
Bonjour à tous,

C'est une bouteille à la mer que je jette ici, en désespoir de cause et après avoir multi recherché dans Google et essayé ce qui était à mon niveau.
Mon projet sur lequel j'ai bien avancé et que je pensais terminé est un script PowerShell permettant de récupérer les valeurs d'attribut dans l'AD pour générer une signature Outlook à partir d'un modèle de signature.

Ainsi je récupérer les infos voulues dans des variables comme suit :

# récupération des informations personnelles dans l'AD
$Info=[ADSI] "LDAP: / / $ADpath2"
$Prenom=$info.givenname # récupération du Prénom.
$Nom=$info.sn # récupération du Nom.
$Tel=$info.telephonenumber # récupération du téléphone fixe
$Mobile=$info.mobile # récupération du num de portable
$Mail=$info.mail # récupération de l'adresse email.

Seulement je pêche pour un détail et je ne parviens pas à m'en sortir.

Mon attribut telephonenumber dans l'ad contient les numéros de téléphone sous cette forme : 0235000000
Et je voudrais pouvoir formater ce numéro lorsque je récupère sa valeur plutôt sous cette forme : 02 35 00 00 00

Inspiré de plusieurs sujets sur le web, je définis donc une nouvelle variable  :
$PhoneNumberform = "{0:0# ## ## ## ##}" -f $Tel

Seulement je récupère ce résultat dans mon fichier généré au lieu du numéro.

"Tel.: System.DirectoryServices.PropertyValueCollection"

Alors qu'en testant cette mise en forme dans une console PS, cela y va bien.

Fichier attaché :

Fichier attaché :



Il y a certainement un domaine qui m'échappe mais je ne parviens pas à trouver.

Je suis donc preneur de toutes aides afin que je ne m'arrache pas les cheveux qu'il me reste.

Merci par avance.
Dernière édition: il y a 1 an 1 mois par Fontaine.

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

Plus d'informations
il y a 1 an 1 mois #33016 par Laurent Dardenne
Salut,
il faut analyser la structure de l'objet manipulé avec Get-Member.
Ici "Tel.: System.DirectoryServices.PropertyValueCollection" indique que la propriété/variable est un tableau contenant + numéros de téléphone.

>>Alors qu'en testant cette mise en forme dans une console PS, cela y va bien.
Toi tu affiches une string mais ton code manipule un tableau.
Et l'opérateur -F attend en paramètre un tableau d'objet, ça tombe en marche :-)

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 1 mois #33017 par Fontaine
Bonjour Laurent,

Merci pour ta réponse.

Je me suis basé sur des exemples trouvé sur internet et je confesse ne pas maitriser tout le vocabulaire.

Du coup si je comprend bien , c'est cet exemple de formatage qui met en forme en tableau "$PhoneNumberform = "{0:0# ## ## ## ##}" -f $Tel" que je ne peux pas récupérer ensuite en variable par ce qu'une string est attendu?

Connais tu de ce fait un autre moyen de mettre en forme un numéro de téléphone ?

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

Plus d'informations
il y a 1 an 1 mois #33020 par Laurent Dardenne
>>Du coup si je comprend bien , c'est cet exemple de formatage qui met en forme en tableau "$PhoneNumberform = "{0:0# ## ## ## ##}" -f $Tel"
>>que je ne peux pas récupérer ensuite en variable par ce qu'une string est attendu?
Non, je parlais du code de ta recopie d'écran.
Ceci est le problème :
$Tel=$info.telephonenumber # récupération du téléphone fixe
Le champ telephonenumber peut contenir 1 ou + numéros de téléphone mais qu'il y en ait 0 ou 1 ou + tu manispule un tableau. Ensuite c'est le code qui formate ( qu'on ne connait pas ici) qui doit être adapté.
Déjà essaie ceci :
$Tel=$info.telephonenumber[0] # récupération du PREMIER numéro de téléphone fixe
Et ceci suppose qu'il existe au moins un numéro. Pour être averti, sans ajouter de test, il est préférable d'afficher le contenu d'une variable entre guillemet simple :
"tel : '$tel'"

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 1 mois #33021 par Laurent Dardenne
Je n'ai pas d'AD sous la main pour créer un code d'exemple, mais tu peux consulter ce post : www.365admin.com.au/2018/04/how-to-force...to-export-multi.html

Ce qui passe dans ce cas est que Powershell appel la méthode ToString() de la classe mais celle-ci ne redéfinie pas cette méthode elle utilise donc celle de base qui affiche le nom du type de l'objet .

Tutoriels PowerShell

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

Plus d'informations
il y a 1 an 1 mois #33040 par Fontaine
Bonjour Laurent et merci pour ces précieux conseils.

Je n'avais effectivement pas pris en compte que le champ telephonenumber était un tableau en définitive.

L'établissement de la variable comme suggéré:

$Tel=$info.telephonenumber[0]

Me permet bien d'isoler le numéro de téléphone et donc ne plus avoir de message de type "System.DirectoryServices.PropertyValueCollection".

A partir de ce point, j'étais plutôt confiant pour formater ensuite mon numéro de téléphone.

Peu importe le code que j'utilise la valeur reste irrémédiablement sans formatage .

J'ai donc utilisé une solution de contournement pour arriver à mes fins.
# récupération des informations personnelles dans l'AD
$Info=[ADSI] "LDAP: / / $ADpath2"
$Prenom=$info.givenname # récupération du Prénom.
$Nom=$info.sn # récupération du Nom.
$Tel=$info.telephonenumber[0] # récupération du PREMIER numéro de téléphone fixe
$Mobile=$info.mobile # récupération du num de portable
$Mail=$info.mail # récupération de l'adresse email.
#$PhoneNumberform = $telformat

$mobileform=$Mobile

#Recuperation pour formatage du numéro de tel

New-Item $localpathSH\Microsoft\Signatures\tel.csv
Set-Content -path $localpathSH\Microsoft\Signatures\tel.csv -value "Tel"
ADD-content -path $localpathSH\Microsoft\Signatures\tel.csv -value "$Tel"
$telformat= Import-CSV -Path $localpathSH\Microsoft\Signatures\tel.csv -Encoding UTF8

Foreach($Telformatage in $telformat){

$telformate = $Telformatage.Tel

}

#Mise en forme du numéro de tel

$PhoneNumberform = [String]::Format('{0:0# ## ## ## ##}',[int]$telformate)

J'utilise un fichier temporaire pour déposer le résultat et le réimporter ensuite à partir d'un csv et là, le formatage fonctionne...

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

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