Question [Résolu]changer Proxyaddresses

Plus d'informations
il y a 4 ans 4 mois #29502 par rhiwotar
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:1]$InfoUser = Get-ADUser test -Properties mail,proxyaddresses
$InfoUser.proxyaddresses
[/code:1]
je récupère
[code:1]SMTP:test@test1.com
smtp:test@test2.fr[/code:1]

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.<br><br>Message édité par: rhiwotar, à: 14/01/20 15:31

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

Plus d'informations
il y a 4 ans 4 mois #29503 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:changer Proxyaddresses
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:1]
New-Variable PatternSMTPAddress -Option ReadOnly -Value 'target.TRUC.Bidule'`
-Description \&quot;Adresse SMTP à vérifier.\&quot; -EA SilentlyContinue

New-Variable PatternTargetAddress -Option ReadOnly -Value 'source.Machin.com'`
-Description \&quot;Attribut TargetAddress à vérifier.\&quot; -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=\&quot;^SMTP:.*@$($PatternSMTPAddress)`$\&quot;;
#Paramètre la regex par substitution
TargetAddressTRUCCORP=\&quot;^.*@$($PatternTargetAddress)`$\&quot;;
TargetAddressTRUC='^.*@target.TrucCorp.tld$';
#ex: o=truc/ou=PARIS/cn=Configuration/cn=Servers/cn=UnServeur
ExchServerName='^.*cn=(?&lt;ServerName&gt;.*)$'
}

function Test-Regex {
#Valide une regex et renvoie $true ou $false
param(
[Parameter(Mandatory=$true,ValueFromPipeline = $true)]
[ValidateNotNullOrEmpty()]
[string] $Value,
[Parameter(Position=0, Mandatory=$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=0, Mandatory=$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=0, Mandatory=$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
[/code:1]
A toi de voir si cela peut t'aider.<br><br>Message édité par: Laurent Dardenne, à: 4/12/19 17:52

Tutoriels PowerShell

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

Plus d'informations
il y a 4 ans 4 mois #29504 par rhiwotar
Réponse de rhiwotar sur le sujet Re:changer Proxyaddresses
Merci!

Je viens de le tester, ça retourne le SMTP principal, faut que je vois comment l'appliquer en pratique.

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

Plus d'informations
il y a 4 ans 4 mois #29505 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Re:changer Proxyaddresses
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

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

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