Laurent Dardenne
Utilisateur
 PowerShelleur Platinum
Messages: 5711 |  | 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=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
|
A toi de voir si cela peut t'aider.
Message édité par: Laurent Dardenne, à: 4/12/19 17:52
Tutoriels PowerShell |