Question Attribut LegacyExchangeDn a traiter en masse

Plus d'informations
il y a 15 ans 2 semaines #9075 par walken
Bonjour a tous,

j'essaye de faire un powershell pour modifier l'attribut LegacyExchangeDN.
Auparavant, j'avais fait un script pour supprimer toutes mes adresses X400.
Avec la meme base, je voudrais donc modifier la valeur de cet attribut.

Je fais cela car je me suis rendu compte que j'avais un grand nombre d'utilisateur qui avait l'ancienne valeur au niveau de cet attribut et que cela ne pointait pas sur le bon groupe administratif au niveau de exchange.


Pour résumer, nous avons migrer notre infrastucture 2003 vers 2007. Lors de la migration 2007 a créer un groupe administratif qui s’appelle : Exchange Administrative Group (FYDIBOHF23SPDLT)
Pour 2003 le groupe administratif s’appelle EXCH2003.
Pour le moment nous n’avons pas supprimé le serveur exchange 2003 (pas encore).

Il est donc impératif que j’arrive a passer tous les attribut qui contienne la valeur
/O=Test/OU=Exch2003/cn=Recipients/cn=mailtest
En
/o=Test/ou=Exchange Administrative Group (FYDIBOHF23SPDLT)/ cn=Recipients/cn=mailtest

Voici mon code par contre cela me supprime tout l’attribut j’aimerai pouvoir juste remplacer /O=Test/OU=Exch2003 en /o=Test/ou=Exchange Administrative Group (FYDIBOHF23SPDLT) et garder ma partie cn=Recipients/cn=……
[code:1]add-pssnapin quest.activeroles.admanagement

$OU = \"OU=Users,OU=test,DC=test,DC=local\"
$Account_List = Get-QADUser -SearchRoot $OU -SizeLimit 0 -DontUseDefaultIncludedProperties -IncludedProperties 'legacyExchangeDN'
$Account_List_Count = $Account_List.count
$proxytoset = New-Object System.Text.StringBuilder
foreach ($useraccount in $Account_List)
{
if ($useraccount.legacyExchangeDN -ne $null)
{
$legacyExchangeDN=$useraccount.legacyExchangeDN
$discard=Set-QADuser $useraccount -ObjectAttributes @{legacyExchangeDN = $null}
foreach ($legacyexchangedn in $legacyExchangeDN)
{
if ([string]$legacyexchangedn.StartsWith(\"/o=Test/ou=EXCH2003\", $True, $Host.CurrentCluture) -eq $False)
{
$dirEntry=$useraccount.DirectoryEntry.PSBase
$discard=$dirEntry.Properties[\"legacyExchangeDN\"].Add($legacyexchangedn)
$discard=$dirEntry.CommitChanges()
}
}
$user = Get-QADuser $useraccount -DontUseDefaultIncludedProperties -IncludedProperties 'legacyExchangeDN'
$user.Name
$user[\"legacyExchangeDN\"]
}
}
Disconnect-QADService
[/code:1]

Avez-vous une idée pour le traitement de cette chaine de caractère ?
Merci pour votre aide

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

Plus d'informations
il y a 15 ans 2 semaines #9077 par Laurent Dardenne
walken écrit:

Avez-vous une idée pour le traitement de cette chaine de caractère ?

Avec l'opérateur Replace (expression régulière) :
[code:1]$old=\"/O=Test/OU=Exch2003/cn=Recipients/cn=mailtest\"
$2003Pattern=[regex]::Unescape('^/O=Test/OU=Exch2003/')
$2007NameGroupNewValue=\"/O=Test/OU=Exchange Administrative Group (FYDIBOHF23SPDLT)/\"
$old -Replace $2003Pattern,$2007NameGroupNewValue
#renvoi : \"/O=Test/OU=Exchange Administrative Group (FYDIBOHF23SPDLT)/cn=Recipients/cn=mailtest\"[/code:1]

Tutoriels PowerShell

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

Plus d'informations
il y a 15 ans 2 semaines #9087 par walken
Bonjour,

Merci pour cette réponse je vais essayer ca cette semaine.

Merci beaucoup pour ton aide.
Je mettrai le code définitif une fois que ca sera bon.

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

Plus d'informations
il y a 15 ans 1 semaine #9141 par walken
Bonjour,

Grace aux conseils de laurent j'ai terminé mon script
un peu différent de la premiere version
Voici le script fonctionnel :

[code:1]add-pssnapin quest.activeroles.admanagement

$var = import-csv c:\Imports\comptes_AD.csv
$var | foreach{ $login = $_.login

$searcher=[adsisearcher]\"(sAMAccountName=$login)\"
$result=$searcher.findone()
$resultat=$result.getdirectoryentry()
$resultat.legacyexchangeDN.value
$Dlegacydn = $resultat.legacyexchangeDN.value


if ($Dlegacydn.StartsWith(\"/O=Test/OU=EXCH2003\"«») )
{

write-host \"oui\"


$2003Pattern=[regex]::Unescape('^/O=Test/OU=EXCH2003/')

$2007NameGroupNewValue=\"/o=Test/OU=Exchange Administrative Group (FYDIBOHF23SPDLT)/\"

$2007 = $Dlegacydn -Replace $2003Pattern,$2007NameGroupNewValue

write-host \"nouvelle valeur de l'attribut legacyExchangeDN : $2007\"
$discard=Set-QADuser -Identity $login -ObjectAttributes @{legacyExchangeDN = $2007}


}
else
{
write-host \"non\"
}
}
[/code:1]

en espérant que cela puisse aider d'autres personnes.
Merci a tous

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

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