Flash info

"Those who forget to script are doomed to repeat their work."

Jeffery Hicks (PowerShell MVP)

 
Accueil arrow Forum

Bienvenue sur le forum PowerShell-Scripting.com

 
rhiwotar
Utilisateur

PowerShelleur Débutant
Messages: 31
graphgraph
Karma: 1  
changer Proxyaddresses - 3/12/19 15:37 Bonjour,

Ma question à peut-être une réponse évidente mais rien me vient comme ça

Je cherche à modifier les valeurs proxyaddresses dans l'AD,
Quand je tape ça
Code:

 $InfoUser Get-ADUser test -Properties mail,proxyaddresses $InfoUser.proxyaddresses


je récupère
Code:

 SMTP:test@test1.com smtp:test@test2.fr



comment je peux cibler une des adresses en particulier pour la supprimer ou la modifier sans impacter l'autre en sachant que je n'ai pas de nom de colonne donc le where marche pas


Pour une vue d'ensemble, on cherche à remplacer nos adresses mail d'un domaine vers un autre, en conservant l'ancienne adresse et celles (s'ils y en a) déjà présente dans les proxyaddresses


Toutes idées sont les bienvenues !!
Merci d'avance.
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5711
graph
Karma: 207  
Re:changer Proxyaddresses - 4/12/19 17:51 Salut,
si je me souviens bien le contenu de cet attribut est un tableau ou une chaine.
Voici un peu de code brut de fonderie, consulte Get-SMTPAddress :
Code:

  New-Variable PatternSMTPAddress -Option ReadOnly -Value 'target.TRUC.Bidule'`               -Description "Adresse SMTP à vérifier." -EA SilentlyContinue  New-Variable PatternTargetAddress -Option ReadOnly -Value 'source.Machin.com'`               -Description "Attribut TargetAddress à vérifier." -EA SilentlyContinue  #Expressions régulière à valider  $ValidationRegex=@{      # Pas de test sur la casse car une adresse est aussi une clé unique      # Paramètre la regex par substitution     Smtp="^SMTP:.*@$($PatternSMTPAddress)`$";      #Paramètre la regex par substitution     TargetAddressTRUCCORP="^.*@$($PatternTargetAddress)`$";     TargetAddressTRUC='^.*@target.TrucCorp.tld$';      #ex: o=truc/ou=PARIS/cn=Configuration/cn=Servers/cn=UnServeur     ExchServerName='^.*cn=(?<ServerName>.*)$' } function Test-Regex {  #Valide une regex et renvoie $true ou $false   param(       [Parameter(Mandatory=$true,ValueFromPipeline $true)]       [ValidateNotNullOrEmpty()]     [string$Value,       [Parameter(Position=0Mandatory=$true)]       [ValidateNotNullOrEmpty()]     [string$Pattern   )  $Value -Match $Pattern     }#Test-Regex function Test-SMTPAddress {   #test si une addresse mail est bien dans un format attendu       param(       [Parameter(Position=0Mandatory=$true)]        #La liste d'addresse doit être renseignée,        # car on suppose la BAL existante             [ValidateNotNullOrEmpty()]     [string[]] $SMTPSource   )     Foreach($CurrentAddr in $SMTPSource)   {     $Result=Test-Regex -Pattern  $ValidationRegex.SMTP -value $CurrentAddr     if ($result)     { break }   }   $Result            }#Test-SMTPAddress function Get-SMTPAddress {  #renvoie l'addresse mail répondant à un format attendu ou $null.        param(        [Parameter(Position=0Mandatory=$true)]        [AllowNull()]        [AllowEmptyString()]            $SMTPSource   )           if ([string]::IsNullOrEmpty($SMTPSource))   { $null}      elseif (($SMTPSource -isnot [System.String]) -and ($SMTPSource -is  [System.Collections.IEnumerable]))   {     Foreach($CurrentAddr in $SMTPSource)    {      if ($CurrentAddr -cmatch '^SMTP:(.*)$')       {           $matches[0]           break        }    }   }   else    {     if ($SMTPSource -cmatch '^SMTP:(.*)$')     {$matches[0]}    else      {$null}   } }#Get-SMTPAddress #L'appel étant Get-SMTPAddress $CurrentAccount.ProxyAddresses


A toi de voir si cela peut t'aider.

Message édité par: Laurent Dardenne, à: 4/12/19 17:52
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
rhiwotar
Utilisateur

PowerShelleur Débutant
Messages: 31
graphgraph
Karma: 1  
Re:changer Proxyaddresses - 5/12/19 14:12 Merci!

Je viens de le tester, ça retourne le SMTP principal, faut que je vois comment l'appliquer en pratique.
  | | L'administrateur a désactivé l'accés public en écriture.
Laurent Dardenne
Utilisateur

PowerShelleur Platinum
Messages: 5711
graph
Karma: 207  
Re:changer Proxyaddresses - 5/12/19 17:24 rhiwotar écrit:
ça retourne le SMTP principal, faut que je vois comment l'appliquer en pratique.
Disons que cela retourne la première occurrence de la regex.
Dans ton cas je pense qu'il te faut une fonction qui renvoit tjr un objet tableau d'adresse à partir des données de $Account.ProxyAddresses. C'est peut être ce qui manquait dans mon traitement d'origine.
Réutilise les contrôles de type déclarés dans la fonction 'Get-SMTPAddress'

Ensuite il s'agira de manipuler ce tableau (ajout, supression).
Tutoriels PowerShell
  | | L'administrateur a désactivé l'accés public en écriture.
© 2019 PowerShell-Scripting.com