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 :

ERREUR PS EXCHANGE [Batch]


Sujet :

Scripts/Batch

  1. #1
    Membre régulier
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Points : 113
    Points
    113
    Par défaut ERREUR PS EXCHANGE
    Bonjour,

    Je n'arrive pas à faire tourner un script dans une console Exchange 2010. L'objet du script est de modifier le champs displayname de bal à partir d'un .csv contenant les adresses mail (emailAddress)
    Toute aide est bienvenu. Merci

    Code : 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
    54
    55
    <# Script a utiliser dans un shell Exchange
    Le script modifie le champs displayname du compte Exchange d un utilisateur en ajoutant une information
    a la suite du displayname
    Les comptes a modifier sont presentes dans un .csv (par defaut adresse_mail) sous la forme d une adresse mail
    Si le compte n est pas trouve une erreur est levee sinon le compte Exchange est modifie
    Les resultats sont enregistres dans trois fichiers de log.
    Si le compte a ete modifie : UccessUsers.log
    Si le compte n a pas ete trouve : UsersNotExist.log
    Si le compte a ete trouve mais n a pas ete modifie : FailedUsers.log
    
    #>
    
    
    # definition des variables
    $Users = Import-Csv C:\adresse_mail.csv
    $failedUsers = @()
    $usersNotExist =@()
    $successUsers = @()
    $VerbosePreference = "Continue"
    $LogFolder = "C:\Scripts"
    
    
    ForEach ($User in $Users) 
    {
    $value = (Get-User -Filter "WindowsEmailAddress -eq '$User.emailAddress'").WindowsEmailAddress.IsValidAddress
    
    try {    
    	if ($value -eq $True){
    		$dn = (Get-User -Filter {WindowsEmailAddress -eq $User.emailAddress}).displayname
    		$dn = $dn + " (MODIFICATION)"
    		Set-User $User.emailAddress -Displayname $dn
    		Write-Verbose "[PASS] Compte $dn modifie"
    		$successUsers += $dn
    		}
    	else {
    		Write-Warning "[WARNING] le compte $dn est inconnu"
            $usersNotExist += $dn
    		 }
    	}
    catch {
    		Write-Warning "[ERROR] impossible de modifier [$dn]"
    		$failedUsers += $dn
    	  }
    
     
     }
     if ( !(test-path $LogFolder)) {
        Write-Verbose "Creation du repertoire [$($LogFolder)] "
        new-item $LogFolder -Force 
    }
    
    Write-verbose "Ecriture logs"
    $failedUsers | out-file -FilePath  $LogFolder\FailedUsers.log -Force -Verbose
    $usersNotExist | out-file -FilePath  $LogFolder\UsersNotExist.log -Force -Verbose
    $successUsers | out-file -FilePath  $LogFolder\SuccessUsers.log -Force -Verbose

  2. #2
    Membre régulier
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Points : 113
    Points
    113
    Par défaut
    J'ai un petit peu avancé en modifiant le code :
    ligne 25 et ligne 30 : le paramètre -Filter de Get-User ne prend pas de {} dans Powershell Exchange. Il faut également que l’évaluation se fasse sur une variable (?) : $mailAdress au lieu de $User.emailAddress.
    Malgré tout j'ai une erreur de levée sur la dernière adresse mail du .csv :

    Invoke-Command : Cannot bind parameter 'Filter' to the target. Exception setting "Filter": "The value "xyz@test.com" could not be converted to type Microsoft.Exchange.Data.SmtpAddress."

    Qu'est ce que j'ai de faux? :/

    Code : 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
    54
    55
    56
    57
    58
    <# Script a utiliser dans un shell Exchange
    Le script modifie le champs displayname du compte Exchange d un utilisateur en ajoutant une information
    a la suite du displayname
    Les comptes a modifier sont presentes dans un .csv (par defaut adresse_mail) sous la forme d une adresse mail
    Si le compte n est pas trouve une erreur est levee sinon le compte Exchange est modifie
    Les resultats sont enregistres dans trois fichiers de log.
    Si le compte a ete modifie : UccessUsers.log
    Si le compte n a pas ete trouve : UsersNotExist.log
    Si le compte a ete trouve mais n a pas ete modifie : FailedUsers.log
    
    #>
    
    
    # definition des variables
    $Users = Import-Csv C:\adresse_mail.csv
    $failedUsers = @()
    $usersNotExist =@()
    $successUsers = @()
    $VerbosePreference = "Continue"
    $LogFolder = "C:\Scripts"
    
    
    ForEach ($User in $Users) 
    {
    $mailAddress = ($User.emailAddress).ToLower()
    $value = (Get-User -Filter "WindowsEmailAddress -eq '$mailAddress'").WindowsEmailAddress.IsValidAddress
    
    try {    
    	if ($value -eq $True){
    		$dn = (Get-User -Filter "WindowsEmailAddress -eq '$mailAddress'").displayname
    		$dn = $dn + " (MODIFICATION)"
    		Set-User $User.emailAddress -Displayname $dn
    		Write-Verbose "[PASS] Compte $dn modifie"
    		$dn
    		$successUsers += $dn
    		$sucessUsers
    		}
    	else {
    		Write-Warning "[WARNING] le compte $dn est inconnu"
            $usersNotExist += $dn
    		 }
    	}
    catch {
    		Write-Warning "[ERROR] impossible de modifier [$dn]"
    		$failedUsers += $dn
    	  }
    
     
     }
     if ( !(test-path $LogFolder)) {
        Write-Verbose "Creation du repertoire [$($LogFolder)] "
        new-item $LogFolder -Force 
    }
    
    Write-verbose "Ecriture logs"
    $failedUsers | out-file -FilePath  $LogFolder\FailedUsers.log -Force -Verbose
    $usersNotExist | out-file -FilePath  $LogFolder\UsersNotExist.log -Force -Verbose
    $successUsers | out-file -FilePath  $LogFolder\SuccessUsers.log -Force -Verbose

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien
    Inscrit en
    Février 2010
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lozère (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien

    Informations forums :
    Inscription : Février 2010
    Messages : 59
    Points : 113
    Points
    113
    Par défaut
    Bon, j'ai trouvé. Je suis un boulet . Les lignes du .csv doivent toutes etres entre double quotes.
    Le script qui fonctionne :

    Code : 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
    54
    55
    56
    <# Script a utiliser dans un shell Exchange
    Le script modifie le champs displayname du compte Exchange d un utilisateur en ajoutant une information
    a la suite du displayname
    Les comptes a modifier sont presentes dans un .csv (par defaut adresse_mail) sous la forme d une adresse mail
    [IMPORTANT] : Toute les lignes du .csv doivent etre entre "" (ligne entete egalement)
    Si le compte n est pas trouve une erreur est levee sinon le compte Exchange est modifie
    Les resultats sont enregistres dans trois fichiers de log.
    Si le compte a ete modifie : UccessUsers.log
    Si le compte n a pas ete trouve : UsersNotExist.log
    Si le compte a ete trouve mais n a pas ete modifie : FailedUsers.log
    
    #>
    
    
    # definition des variables
    $Users = Import-Csv C:adresse_mail.csv
    $failedUsers = @()
    $usersNotExist =@()
    $successUsers = @()
    $VerbosePreference = "Continue"
    $LogFolder = "C:\Scripts"
    
    
    ForEach ($User in $Users) 
    {
    try {
    	$mailAddress = ($User.emailAddress).ToLower()
    	$value = (Get-User -Filter "WindowsEmailAddress -eq '$mailAddress'").WindowsEmailAddress.IsValidAddress    
    	if ($value -eq $True){
    		$dn = (Get-User -Filter "WindowsEmailAddress -eq '$mailAddress'").displayname
    		$dn = $dn + " (MODIFICATION)"
    		Set-User -Identity $mailAddress -Displayname $dn
    		Write-Verbose "[PASS] Compte $dn modifie"
    		$successUsers += $dn	
    		}
    	else {
    		Write-Warning "[WARNING] le compte $dn est inconnu"
            $usersNotExist += $dn
    		 }
    	}
    catch {
    		Write-Warning "[ERROR] impossible de modifier [$dn]"
    		$failedUsers += $dn
    	  }
    
     
     }
     if ( !(test-path $LogFolder)) {
        Write-Verbose "Creation du repertoire [$($LogFolder)] "
        new-item $LogFolder -Force 
    }
    
    Write-verbose "Ecriture logs"
    $failedUsers | out-file -FilePath  $LogFolder\FailedUsers.log -Force -Verbose
    $usersNotExist | out-file -FilePath  $LogFolder\UsersNotExist.log -Force -Verbose
    $successUsers | out-file -FilePath  $LogFolder\SuccessUsers.log -Force -Verbose

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

Discussions similaires

  1. [Exchange 2016] Erreur DNS Exchange Server 2016
    Par srvadm dans le forum Exchange Server
    Réponses: 1
    Dernier message: 10/07/2018, 07h11
  2. [Exchange 2007] Erreur de suppression d'un compte
    Par Ciel_étoilé dans le forum Exchange Server
    Réponses: 1
    Dernier message: 17/01/2010, 12h25
  3. Réponses: 1
    Dernier message: 15/10/2009, 13h01
  4. [erreur] 80070057 : dossier public gestionnaire exchange
    Par kempa91 dans le forum Exchange Server
    Réponses: 1
    Dernier message: 26/03/2008, 14h32
  5. erreur relai de postfix à exchange
    Par sadigoun dans le forum Administration système
    Réponses: 1
    Dernier message: 25/01/2008, 12h56

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