Question
Attribut LegacyExchangeDn a traiter en masse
- walken
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 27
- Remerciements reçus 0
il y a 15 ans 2 semaines #9075
par walken
Attribut LegacyExchangeDn a traiter en masse a été créé 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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 15 ans 2 semaines #9077
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Attribut LegacyExchangeDn a traiter en masse
walken écrit:
[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]
Avec l'opérateur Replace (expression régulière) :Avez-vous une idée pour le traitement de cette chaine de caractè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.
- walken
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 27
- Remerciements reçus 0
il y a 15 ans 2 semaines #9087
par walken
Réponse de walken sur le sujet Re:Attribut LegacyExchangeDn a traiter en masse
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.
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.
- walken
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 27
- Remerciements reçus 0
il y a 15 ans 1 semaine #9141
par walken
Réponse de walken sur le sujet Re:Attribut LegacyExchangeDn a traiter en masse
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
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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Attribut LegacyExchangeDn a traiter en masse