IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

déterminer le type d'une variable puis création de logs [PowerShell]


Sujet :

Scripts/Batch

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut déterminer le type d'une variable puis création de logs
    Bonjour,

    je suis encore sur mon script qui travaille sur un AD, mais je me restreins à une question précise. Ce script crée une variable $data et pour l'analyser, je voudrais déjà connaître son type. Dans ce livre, il est dit page 110 que pour déterminer le type, on fait $data.GetType(). Or, si je le fais, j'obtiens
    CN=sesa449786,OU=Users,OU=Grenoble-38I,OU=Sites,OU=FR,OU=Countries,DC=eur,DC=gad,DC=schneider-electric,DC=com.GetType()
    Ca a donc l'air invalide. Que faut-il faire ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par laurentSc Voir le message
    je suis encore sur mon script qui travaille sur un AD

    Ton code semble être appelé dans un chaine de caractères :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $data='ContenuDeVariable'
    "$data.Gettype()"
    #ContenuDeVariable.Gettype()
    Dans ce cas le parseur de Powershell considère que tu souhaite afficher le contenu de la variable $Data et ne tient pas compte de la suite d'instructions.
    Pour ce faire, il faut utiliser la construction de groupe $() comme ceci :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    "$($data.Gettype())"
    #string
    Ainsi il tient compte du groupe d'instructions et affiche le type de la variable en tant que chaine de caractères.
    Si tu utilises directement le code dans la console :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $data.Gettype()
    Il renvoi un objet type :
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    IsPublic IsSerial Name                                     BaseType
    -------- -------- ----                                     --------
    True     True     String                                   System.Object

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    nickel, avec ce que tu m'as indiqué, il retourne System.Object[]. C'est donc un objet. Mais comment avoir la liste des propriétés et leur valeur ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  4. #4
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    C'est un tableau d'objet, regarde le nombre d'objet qu'il contient
    Ensuite le type de chaque objet :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    $Data|Get-Member
    Si ton tableau contient un seul et même type d'objet tu auras une seule ligne de détail :

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    #tableau d'objet de même type
     $data=1..3
     $data|get-member
     
     
       TypeName: System.Int32
     
    Name        MemberType   Definition
    ----        ----------   ----------
    CompareTo   Method       int CompareTo...
    Si ton tableau d'objet contient des types différents tu auras plusieurs lignes de détail :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    $data +='String'
    $data|get-member
     
     
       TypeName: System.Int32
     
    Name        MemberType   Definition
    ----        ----------   ----------
    CompareTo   Method       int CompareTo...
     
     
     
       TypeName: System.String
     
    Name             MemberType
    ----             ----------
    Clone            Method ...

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Le comptage semble poser problème ! $data.Count donne
    CN=sesa449786,OU=Users,OU=Grenoble-38I,OU=Sites,OU=FR,OU=Countries,DC=eur,DC=gad,DC=schneider-electric,DC=com.Count
    Par contre, il n'y a qu'un seul type d'objet : $data|get-member donne
    TypeName: Microsoft.ActiveDirectory.Management.ADUser

    Name MemberType Definition
    ---- ---------- ----------
    Contains Method bool Contains(string propertyName)
    Equals Method bool Equals(System.Object obj)
    GetEnumerator Method System.Collections.IDictionaryEnumerator GetEnumerator()
    GetHashCode Method int GetHashCode()
    ...
    SamAccountName Property System.String SamAccountName {get;set;}
    comment afficher la valeur de la propriété SamAccountName ?

    EDIT : la méthode Contains semble adaptée mais je n'arrive pas à l'utiliser !
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Le comptage semble poser problème !
    Je vois ça :-).
    Citation Envoyé par laurentSc Voir le message
    comment afficher la valeur de la propriété SamAccountName ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Foreach ($User in $Data) {
     $user.SamAccountName
    }
    Citation Envoyé par laurentSc Voir le message
    la méthode Contains semble adaptée mais je n'arrive pas à l'utiliser !
    Il me semble que tu as déjà posté sur le sujet...

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Ce Foreach fonctionne.

    Par contre, je voudrais écrire cette valeur dans un fichier csv. J'ai donc fait $user.SamAccountName | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESA.csv -Append, mais dans le fichier, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #TYPE System.String
    "Length"
    "10"
    "10"
    donc, comment faut-il faire ?

    Citation Envoyé par Laurent Dardenne Voir le message
    Il me semble que tu as déjà posté sur le sujet...
    Exact, sauf que comme j'avais posé plein de questions dans ce post, et que le titre ne correspondait plus, je l'avais clos et en avais créé un autre...
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  8. #8
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    donc, comment faut-il faire ?
    Dans ton code tu exportes le contenu des propriétés du membre 'SamAccountName' et pas le contenu de la propriété 'SamAccountName'.

    Export-csv manipule des objets, ses propriétés, il faut construire un objet possédant uniquement la ou les propriétés que tu veux exporter
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $New=$User|Select-Object SamAccountName 
    $New| Export-csv -path ...
    Ainsi le nouvel objet exporté a une seule propriété 'SamAccountName':
    Code Powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $User|Select-Object SamAccountName | Export-csv -path ...

  9. #9
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Nickel !

    Encore une question et même si le titre ne correspond plus du tout, je continue cette discussion.

    Maintenant, j'ai dans un fichier la liste des identifiants que j'ai pu insérer dans l'AD. Mais je voudrais aussi créer un fichier avec la liste de ceux que je n'ai pas pu insérer. Sauf que pour ceux-là, le tableau d'objets $data n'existe pas donc la propriété 'SamAccountName' non plus. Donc comment faire ici (cas du else ligne 30) ?

    Voici le script complet actuel :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    clear-content C:\Users\SESA27384\Desktop\AD\SESA.csv
    $path = "C:\Users\SESA27384\Desktop\AD\testunecolonne2.csv"
    $csv = Import-Csv -path $path
    foreach($line in $csv)
    { 
        $columnvalue = $line.Name
        Write-Host "Entry: $columnvalue"
     
        $data = @()
        $domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
        foreach($domain in $domains)
    	{
    	 $data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
    	}
       [bool]$data
       Write-Host "16 $($data.GetType())"
     
       $data|get-member
     
       if ($data) { 
                        Write-Host "Insert $columnvalue" 
    		    Add-ADGroupMember "CN=GAD-SU-NextGenPDM_NonPROD,OU=Access Management,OU=Groups,DC=gad,DC=schneider-electric,DC=com" -server gad.schneider-electric.com -Member $data
     
                        Foreach ($User in $Data) {
                             Write-Host $user.SamAccountName
                             $New=$User|Select-Object SamAccountName #construire un objet avec une seule propriété
                             $New | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESA.csv -Append #export de cet objet
                       }
    	     }
       else { Write-Host "Entry Not Found $columnvalue" }
    }
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  10. #10
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par laurentSc Voir le message
    Donc comment faire ici
    Réfléchir ?

    Tu as écrit dans ce que tu dois faire, il faut l'implémenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $ListePasfait=@()
    
    foreach($line in $csv)
     if ok {insert)
     else { $listePasfait +=$Line (Pasinsérée)}
    }
    
    #créer un fichier avec la liste
    $listePasfait|export-csv -Name 'Pasfait/Resteàfaire'

  11. #11
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Laurent Dardenne Voir le message
    Réfléchir ?
    Tu en demandes beaucoup

    Comme ça simplifie beaucoup, j'ai voulu utiliser ce code dans les 2 cas (insertion OK ou non). Mais dans le cas OK, ça marche pas...

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    $strFileName="C:\Users\SESA27384\Desktop\AD\SESAOK.csv"
    if (test-path $strFileName) {clear-content C:\Users\SESA27384\Desktop\AD\SESAOK.csv}
    $strFileName="C:\Users\SESA27384\Desktop\AD\SESANOK.csv"
    if (test-path $strFileName) {clear-content C:\Users\SESA27384\Desktop\AD\SESANOK.csv}
    $path = "C:\Users\SESA27384\Desktop\AD\testunecolonne2.csv"
    $csv = Import-Csv -path $path
     
    foreach($line in $csv)
    { 
        $columnvalue = $line.Name
        Write-Host "Entry: $columnvalue"
     
        $data = @()
        $sesaNOK=$()
        $sesaOK=$()
        $domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
    	foreach($domain in $domains)
    				{
    					$data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
    				}
    	[bool]$data
     
    	if ($data) { Write-Host "Insert $columnvalue" 
    			Add-ADGroupMember "CN=GAD-SU-NextGenPDM_NonPROD,OU=Access Management,OU=Groups,DC=gad,DC=schneider-electric,DC=com" -server gad.schneider-electric.com -Member $data
    			$sesaOK +=$line
    	}
    	else { Write-Host "Entry Not Found $columnvalue" 
               $sesaNOK +=$line
    	}
    } 
    Write-Host "sesaNOK=$sesaNOK"
    $sesaNOK | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESANOK.csv
    Write-Host "sesaOK=$sesaOK"
    $sesaOK  | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESAOK.csv
    La ligne 33 affiche sesaOK= et la ligne 34 affiche
    Export-Csv : Cannot bind argument to parameter 'InputObject' because it is null.
    At C:\Users\sesa27384\Documents\aalaurent\boulot\powershell\scripts\PopulateADGroup3.ps1:40 char:12
    + $sesaOK | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESAOK.csv
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidData: ( [Export-Csv], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.ExportCsvCommand
    Pourquoi la ligne 34 échoue alors que la ligne 32 marche bien ?
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  12. #12
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Il te faut déjà respecter la syntaxe de construction d'un tableau qui est :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sesaNOK=@()
    $sesaOK=@()
    et pas :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $sesaNOK=$()
    $sesaOK=$()
    Ensuite si tu crées ton tableau dans le boucle ton tableau sera remis à zéro à chaque itération.

    Petit rappel, on ne fait pas de l'alchimie :
    N'importe quoi en entrée, n'importe quoi en sortie !

  13. #13
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 384
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 384
    Points : 5 732
    Points
    5 732
    Billets dans le blog
    1
    Par défaut
    Merci

    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    $strFileName="C:\Users\SESA27384\Desktop\AD\SESAOK.csv"
    if (test-path $strFileName) {clear-content C:\Users\SESA27384\Desktop\AD\SESAOK.csv}
    $strFileName="C:\Users\SESA27384\Desktop\AD\SESANOK.csv"
    if (test-path $strFileName) {clear-content C:\Users\SESA27384\Desktop\AD\SESANOK.csv}
    $path = "C:\Users\SESA27384\Desktop\AD\testunecolonne2.csv"
    $csv = Import-Csv -path $path
    $sesaNOK=@()
    $sesaOK=@()
    foreach($line in $csv)
    { 
        $columnvalue = $line.Name
        Write-Host "Entry: $columnvalue"
     
    	$data = @()
     
    	$domains = "gad.schneider-electric.com","eur.gad.schneider-electric.com","apa.gad.schneider-electric.com","nam.gad.schneider-electric.com","gmea.gad.schneider-electric.com"
    	foreach($domain in $domains)
    				{
    					$data += Get-ADUser -filter "((EmployeeID -like '$columnvalue') -OR (name -like '$columnvalue')) -AND (enabled -eq '$true') " -Server $domain 
    				}
    	[bool]$data
     
    	if ($data) { Write-Host "Insert $columnvalue" 
    			Add-ADGroupMember "CN=GAD-SU-NextGenPDM_NonPROD,OU=Access Management,OU=Groups,DC=gad,DC=schneider-electric,DC=com" -server gad.schneider-electric.com -Member $data
    			$sesaOK +=$line
                 #Foreach ($User in $Data) {
                  # Write-Host $user.SamAccountName
                  # $New=$User|Select-Object SamAccountName #construire un objet avec une seule propriété
                  # $New | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESAOK.csv -Append #export de cet objet
                 #}
    	}
    	else { Write-Host "Entry Not Found $columnvalue" 
               $sesaNOK +=$line
    	}
    } 
     
    $sesaNOK | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESANOK.csv
     
    $sesaOK  | Export-csv -path C:\Users\SESA27384\Desktop\AD\SESAOK.csv
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. determiner le type d'une variable
    Par Mokhtar BEN MESSAOUD dans le forum Langage
    Réponses: 1
    Dernier message: 14/03/2006, 17h11
  2. [VBA-E]Renvoyer le type d'une variable
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/02/2006, 18h07
  3. Connaitre le type d'une variable
    Par mic79 dans le forum Langage
    Réponses: 2
    Dernier message: 04/01/2006, 15h42
  4. Changer el type d'une variable sql sous postgre8/admin
    Par smag dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 24/08/2005, 12h31
  5. Déterminer le type d'une class dérivée
    Par LDDL dans le forum MFC
    Réponses: 3
    Dernier message: 10/12/2004, 17h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo