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 :

Remplacement du SMTP par un autre (script) (construction prénom et nom) [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 65
    Par défaut Remplacement du SMTP par un autre (script) (construction prénom et nom)
    Bonjour,

    J'essaie de faire fonctionner un script qui permets de construire sur la base du "prénom" + "nom" +@domain.com en se basant sur un csv


    ci dessous le code (cela foire à plusieurs endroits, mais j'essai déja de résoudre le début)

    le csv ne contient qu'une seule colonne avec l'en tête "EmailAddress"


    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
    #Changez le SMTP pour correspondre Ã* votre domaine
    $newdomainAdd = "@domaine.com"
     
     
    #Requete et stockage des Proxyaddresses des comptes du CSV
    $csv = Import-Csv "C:\Users\users.csv" -Delimiter "," 
    $csv | ForEach-Object {
        #Pour chaque user du CSV, requete de l'ensemble des attributs stockage dans la variable $user
            $emailaddress = $_.EmailAddress
          $User= Get-ADUser -Filter {mail -like $emailaddress} -properties mail
        $User
     
        }
        $sam= $User.samaccountname
          write-output " > Traitement de $sam"

    et la deuxième partie à revoir

    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
        #création des nouveaux attributs
        $Mail= $User.GivenName + "." + $User.SurName + "$newdomainAdd"
        $NewSmtp= "SMTP:" + $mail}
        #Parcours chaque proxy du user parser
        $user.proxyaddresses | foreach {
                #Si la proxy est la principale rentre dans la condition
                if($_.EmailAddress -clike "SMTP:*"){
                        #recupere la principale
                        $old=$_
                        #Modifier le SMTP en smtp
                        $Replaced=$old.replace("SMTP:","smtp:")
                        write-output "$old  => Suppression ancienne SMTP" 
                        #Suppression de la ligne SMTP:
                        set-ADUser -Identity $Sam -Remove @{ProxyAddresses=$old} 
                        write-output "$New  => Ajout nouvelle smtp"
                        #Ajout de la ligne smtp:
                        set-ADUser -Identity $Sam -Add @{ProxyAddresses=$Replaced} 
                    }
        }
        write-output "$New  => Ajout nouvelle SMTP"
        set-ADUser -Identity $sam -Add @{ProxyAddresses=$newsmtp} 
        Write-Output "$mail  => Ajout nouvelle @mail"
        set-ADUser -Identity $sam -emailaddress $mail 
        $sam,$mail,$NewSmtp,$Old,$replaced=$null

    Merci pour votre aide.
    En fait le début fonctionne, mais il ne m'affiche que le dernier utilisateur. Uniquement la dernière ligne lorsque je tape sur Pshell $sam

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Comme cela ça paraitrait plus logique pour la partie 1.
    Il faudrait peut être vérifier si le compte AD existe aussi.

    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
    #Nom de domaine pour le SMTP
    $newdomainAdd = "@domaine.com"
     
    #Requete et stockage des comptes du CSV
    $csv = Import-Csv "C:\Users\users.csv" -Delimiter ","
     
    #Pour chaque user du CSV
    $csv | ForEach-Object {
     
        #Stock l'utilisateur AD correspondant dans la variable $user
        $User = Get-ADUser -Filter {mail -like $_.EmailAddress} -Properties mail
     
        #Récupère le samaccountname
        $sam = $User.samaccountname
     
        Write-Output " > Traitement de $sam"
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 65
    Par défaut
    Bonjour Eric et merci de la réponse

    J'avais tenté de mettre le $_emailaddress dans la requête Get Aduser mais il semble ne pas en vouloir (je ne suis pas hyper expert en Pshell malheureusement (mais j'apprends )

    En plus et curieusement le script ne me prends que la dernière ligne du csv, on dirait qu'il ignore toutes les autres avant (les autres utilisateurs)






  4. #4
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    Dans $_emailaddress il manque un .
    Que donne le code donnée ? Car je ne sais pas ce que tu lance

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    65
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 65
    Par défaut
    J'ai pu avancer avec quelqu'un mais cela ne fait aucun changement

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    #Permet de construire sur la base du PRENOM + NOM + @suffixe l'adresse SMTP principale
    #Puis supprimer l'ancienne. Enfin il l'ajoute l'ancienne en alias.
    #Utilisation d'un CSV Obligatoire basé sur "emailaddress"
    ############################
    ############################
    # Output will be added to C:\temp folder. 
    Start-Transcript -Path C:\temp\Add-SMTP-Address.log -Append
    #ImportModule Exchange 2016 & AD
    Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn;
    Import-Module ActiveDirectory -ErrorAction Stop
     
    #Changez le SMTP pour correspondre Ã* votre domaine
    $newdomainadd = "@domain.com"
     
    #Requete et stockage des Proxyaddresses des comptes du CSV
    $csv = Import-Csv "C:\Users\\users.csv" -Delimiter "," 
    $csv | ForEach-Object {
        #Pour chaque user du CSV, requete de l'ensemble des attributs stockage dans la variable $user
            $emailaddress = $_.EmailAddress
            $User= Get-ADUser -Filter {mail -like $emailaddress} -properties *
            $sam= $User.samaccountname
        write-output " > Traitement de $sam"
     
         #Parcours chaque proxy du user parser
            foreach ($UsersCSV in $AllUsers ) {
        $AllUsers= $User
        #Création des nouveaux attributs
        $Mail= $User.GivenName + "." + $User.SurName + "$newdomainAdd"
        $NewSmtp= "SMTP:" + $Mail
        $sam1= $User.samaccountname
     
                #Si la proxy est la principale rentre dans la condition
                if($User.proxyAddresses -like "SMTP:*"){
                        #recupere la principale
                        $old=$User.EmailAddress
                        #Modifier le SMTP en smtp
                        $Replaced= "smtp:"+$old.replace("SMTP:*","smtp:")
                        write-output $old  "=> Suppression ancienne SMTP" 
                        #Suppression de la ligne SMTP:
                        set-ADUser -Identity $sam1 -Remove @{ProxyAddresses=$old}
                        write-output $old  "=> Ajout ancienne smtp"
                        #Ajout de la ligne smtp:
                        set-ADUser -Identity $sam1 -Add @{ProxyAddresses=$Replaced}
                        write-output $Replaced  "=> Ajout nouvelle SMTP"
                        set-ADUser -Identity $sam1 -Add @{ProxyAddresses=$newsmtp}
                        Write-Output $mail  "=> Ajout nouvelle @mail"
                        set-ADUser -Identity $sam1 -EmailAddress $mail
                        #$sam1,$mail,$NewSmtp,$Old,$replaced
                    }
        }
            }
     
    Stop-Transcript

  6. #6
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    A première vu $AllUsers n'existe pas...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 11/09/2007, 17h58
  2. Réponses: 8
    Dernier message: 31/05/2006, 12h33
  3. Remplacer un mot par un autre dans un fichier
    Par vbcasimir dans le forum Linux
    Réponses: 8
    Dernier message: 25/04/2006, 12h08
  4. [VB.NET] Comment remplacer une couleur par une autre?
    Par jazz matazz dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/02/2006, 14h29
  5. Remplacer un texte par un autre
    Par Guillaume602 dans le forum C++
    Réponses: 3
    Dernier message: 24/11/2005, 00h40

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