Question
Doublons générés lors du traitement import AD
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 169
- Remerciements reçus 35
il y a 2 ans 2 mois #31205
par ericlm128
Réponse de ericlm128 sur le sujet Doublons générés lors du traitement import AD
Oui c'est ca que je voulais voir
www.powershell-scripting.com/index.php/f...rt-ad?start=42#31148
J'ai déjà fait ce genre de chose, regarde ici (option 2 ou 3) :
www.reddit.com/r/PowerShell/comments/a5h...e_diacritics_%C3%AB/
www.powershell-scripting.com/index.php/f...rt-ad?start=42#31148
J'ai déjà fait ce genre de chose, regarde ici (option 2 ou 3) :
www.reddit.com/r/PowerShell/comments/a5h...e_diacritics_%C3%AB/
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 169
- Remerciements reçus 35
il y a 2 ans 2 mois #31206
par ericlm128
Réponse de ericlm128 sur le sujet Doublons générés lors du traitement import AD
Fait attention au o e dans l'o c'est un vicelard car il se change la taille de la chaine de caractère
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 1 mois #31269
par witness
Hello,
Suis de retour.
J'ai regardé l'article et en cherchant à comprendre je suis tombé sur un autre article qui proposait cette commande: Remove-StringLatinCharacters
J'ai testé et voilà ce que ça m'a donné:
Du coup ça pourrait faire le job, seulement, en essayant cette commande dans le module powershell active directory, la commande est inconnue.
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
Oui c'est ca que je voulais voir
www.powershell-scripting.com/index.php/f...rt-ad?start=42#31148
J'ai déjà fait ce genre de chose, regarde ici (option 2 ou 3) :
www.reddit.com/r/PowerShell/comments/a5h...e_diacritics_%C3%AB/
Hello,
Suis de retour.
J'ai regardé l'article et en cherchant à comprendre je suis tombé sur un autre article qui proposait cette commande: Remove-StringLatinCharacters
J'ai testé et voilà ce que ça m'a donné:
PS C:\Users\toto> Remove-StringLatinCharacters -string "l'été"
l'ete
PS C:\Users\toto> Remove-StringLatinCharacters -string "âne"
ane
PS C:\Users\toto> Remove-StringLatinCharacters -string "noêl"
noel
PS C:\Users\toto> Remove-StringLatinCharacters -string "noël"
noel
PS C:\Users\toto> Remove-StringLatinCharacters -string "hôte"
hote
PS C:\Users\toto> Remove-StringLatinCharacters -string "elle est là"
elle est la
Du coup ça pourrait faire le job, seulement, en essayant cette commande dans le module powershell active directory, la commande est inconnue.
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 1 mois #31273
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
Avec la solution 3 de ton lien, j'obtiens ceci:
Je peux utiliser cette fonction du coup.
Par contre, comment l'appliquer seulement à quelques variables ?
Actuellement, dans mon script, j'ai ces 3 lignes qui sont concernées:
Le script complet:
Merci
PS C:\Users\Administrateur> Remove-DiacriticsAndSpaces -inputString "noêl"
noel
PS C:\Users\Administrateur> Remove-DiacriticsAndSpaces -inputString "âne"
ane
PS C:\Users\Administrateur> Remove-DiacriticsAndSpaces -inputString "l'été"
lete
PS C:\Users\Administrateur> Remove-DiacriticsAndSpaces -inputString "noël"
noel
PS C:\Users\Administrateur> Remove-DiacriticsAndSpaces -inputString "hôte"
hote
PS C:\Users\Administrateur> Remove-DiacriticsAndSpaces -inputString "elle est là"
elleestla
Je peux utiliser cette fonction du coup.
Par contre, comment l'appliquer seulement à quelques variables ?
Actuellement, dans mon script, j'ai ces 3 lignes qui sont concernées:
$sn = $_.Nom -replace '[^a-z0-9]+',''
$givenname = $_.Prenom -replace '[^a-z0-9]+',''
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[^a-z A-Z 0-9]+','' -replace '[ ]',''
Le script complet:
$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"
$AD_SAM = get-ADuser -filter * -SearchBase "DC=mondomaine,DC=local" | Select-Object -ExpandProperty SamAccountName
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom -replace '[^a-z0-9]+',''
$givenname = $_.Prenom -replace '[^a-z0-9]+',''
$Classe = $_.Classe
$identifiant = $_.identifiant
$ou = "OU=importusers,DC=mondomaine,DC=local"
$description = 'GCU-ORG{$ELEVE}$' + $Classe
$SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
if ($AD_SAM -contains $SAM)
{
for ($i = 1 ; $AD_SAM -contains ($SAM + $i) ; $i++)
{
}
$SAM = $SAM + $i
}
$AD_SAM += $SAM
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[^a-z A-Z 0-9]+','' -replace '[ ]',''
$CN = $sn + " " + $givenname + " " + "[$identifiant]"
$displayName = $CN
$UPN = $SAM + "@mondomaine.local"
$userAccountControl = 66050
$CannotChangePassword = 1
$HomeDrive = "U"
$HomeDirectory = "\\test\test"
$ProfilePath = "C:\users"
$ScriptLogon = "test"
$Password = '{0}{1}' -f (get-random -Minimum 1000000 -Maximum 9999999), [char](get-random -Minimum 65 -Maximum 90)
$Password = $Password -replace '0',(Get-Random -Minimum 1 -Maximum 9) -replace 'O',[char](get-Random -Minimum 65 -Maximum 78)
$Secure_String_pwd = ConvertTo-SecureString $Password -AsPlainText -Force
$Enabled = 1
New-ADuser -displayName $displayName -Path $ou -Description $description -SamAccountName $SAM -givenname $givenname -Surname $sn -name $displayName -UserPrincipalName $UPN -PasswordNeverExpires $userAccountControl -CannotChangePassword $CannotChangePassword -HomeDrive $HomeDrive -HomeDirectory $HomeDirectory -ProfilePath $ProfilePath -ScriptPath $ScriptLogon -Enabled $Enabled -Accountpassword $Secure_String_pwd
[PSCustomObject]@{
Nom = $sn
Prenom = $givenname
OU = $ou
Description= $description
Login = $SAM
Lettre_lecteur = $HomeDrive
Dossier_personnel = $HomeDirectory
Chemin_profil = $ProfilePath
ScriptLogon = $ScriptLogon
Mot_de_passe = $Password
}
}
$NewUsers | Export-Csv -path "C:\Users\Administrateur\Desktop\export.csv" -Append -NoTypeInformation -Delimiter ";"
Merci
Connexion ou Créer un compte pour participer à la conversation.
- ericlm128
- Hors Ligne
- Membre elite
-
Réduire
Plus d'informations
- Messages : 169
- Remerciements reçus 35
il y a 2 ans 1 mois - il y a 2 ans 1 mois #31274
par ericlm128
Réponse de ericlm128 sur le sujet Doublons générés lors du traitement import AD
$sn = $_.Nom -replace '[^a-z0-9]+',''
$sn = Remove-DiacriticsAndSpaces -inputString $sn
$givenname = $_.Prenom -replace '[^a-z0-9]+',''
$givenname = Remove-DiacriticsAndSpaces -inputString $givenname
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[^a-z A-Z 0-9]+','' -replace '[ ]',''
$SAM = Remove-DiacriticsAndSpaces -inputString $SAM
Dernière édition: il y a 2 ans 1 mois par ericlm128.
Les utilisateur(s) suivant ont remercié: witness
Connexion ou Créer un compte pour participer à la conversation.
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 1 mois - il y a 2 ans 1 mois #31278
par witness
Réponse de witness sur le sujet Doublons générés lors du traitement import AD
J'ai essayé le script ci-dessous mais il me supprime les caractères avec accent pour le $sn et $givenname.
Et comme le $Sam est composé du $sn et $givenname, je perds des lettres.
SCRIPT
Pourtant quand je teste cette fonction directement dans le module powershell active directory, j'ai bien un changement et non une suppression qui s'opère:
FONCTION
Pour info, voici le contenu de mon fichier de d'import:
Nom;Prenom;Classe;Identifiant
LOUIS;Virgile;102;6082
LOUIS;Victor;102;6078
PETIT;Lisa;104;4890
PETIT;Lou;502;4886
DUPOND;Assia;309;3701
DUPOND;Ambrine;610;7802
LOUIS;Virgile;102;6003
LOUIS;Victor;102;6004
PETIT;Lisa;104;4805
PETIT;Lou;502;4806
Pétit;Jêan;900,9874
Et voici le résultat de mon fichier d'export en fin de traitement:
"Nom";"Prenom";"OU";"Description";"Login";"Lettre_lecteur";"Dossier_personnel";"Chemin_profil";"ScriptLogon";"Mot_de_passe"
"DUPOND";"Ambrine";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$610";"adupond";"U";"\\test\test";"C:\users";"test";"2474487K"
"LOUIS";"Virgile";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis";"U";"\\test\test";"C:\users";"test";"5994973F"
"LOUIS";"Victor";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis1";"U";"\\test\test";"C:\users";"test";"6261547K"
"PETIT";"Lisa";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit";"U";"\\test\test";"C:\users";"test";"5252585B"
"PETIT";"Lou";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit1";"U";"\\test\test";"C:\users";"test";"1385456W"
"DUPOND";"Assia";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$309";"adupond1";"U";"\\test\test";"C:\users";"test";"9362423L"
"LOUIS";"Virgile";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis2";"U";"\\test\test";"C:\users";"test";"8762193J"
"LOUIS";"Victor";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis3";"U";"\\test\test";"C:\users";"test";"6423677J"
"PETIT";"Lisa";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit2";"U";"\\test\test";"C:\users";"test";"4748119D"
"PETIT";"Lou";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit3";"U";"\\test\test";"C:\users";"test";"4541454I"
"Ptit";"Jan";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$900,9874";"jptit";"U";"\\test\test";"C:\users";"test";"1356626V"
On voit bien à la dernière ligne que les caractères avec accent ont été supprimés.
Et comme le $Sam est composé du $sn et $givenname, je perds des lettres.
SCRIPT
function Remove-DiacriticsAndSpaces
{
Param(
[String]$inputString
)
#replace diacritics
$sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString))
#remove spaces and anything the above function may have missed
return($sb -replace '[^a-z0-9]', '')
}
$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"
$AD_SAM = get-ADuser -filter * -SearchBase "DC=Mondomaine,DC=local" | Select-Object -ExpandProperty SamAccountName
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom
$sn = Remove-DiacriticsAndSpaces -inputString $sn
$givenname = $_.Prenom
$givenname = Remove-DiacriticsAndSpaces -inputString $givenname
$Classe = $_.Classe
$identifiant = $_.identifiant
$ou = "OU=importusers,DC=Mondomaine,DC=local"
$description = 'GCU-ORG{$ELEVE}$' + $Classe
$SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
if ($AD_SAM -contains $SAM)
{
for ($i = 1 ; $AD_SAM -contains ($SAM + $i) ; $i++)
{
}
$SAM = $SAM + $i
}
$AD_SAM += $SAM
$SAM = $SAM.SubString(0, [Math]::Min(19, $SAM.length)) -replace '[ ]',''
$SAM = Remove-DiacriticsAndSpaces -inputString $SAM
$CN = $sn + " " + $givenname + " " + "[$identifiant]"
$displayName = $CN
$UPN = $SAM + "@Mondomaine.local"
$userAccountControl = 66050
$CannotChangePassword = 1
$HomeDrive = "U"
$HomeDirectory = "\\test\test"
$ProfilePath = "C:\users"
$ScriptLogon = "test"
$Password = '{0}{1}' -f (get-random -Minimum 1000000 -Maximum 9999999), [char](get-random -Minimum 65 -Maximum 90)
$Password = $Password -replace '0',(Get-Random -Minimum 1 -Maximum 9) -replace 'O',[char](get-Random -Minimum 65 -Maximum 78)
$Secure_String_pwd = ConvertTo-SecureString $Password -AsPlainText -Force
$Enabled = 1
New-ADuser -displayName $displayName -Path $ou -Description $description -SamAccountName $SAM -givenname $givenname -Surname $sn -name $displayName -UserPrincipalName $UPN -PasswordNeverExpires $userAccountControl -CannotChangePassword $CannotChangePassword -HomeDrive $HomeDrive -HomeDirectory $HomeDirectory -ProfilePath $ProfilePath -ScriptPath $ScriptLogon -Enabled $Enabled -Accountpassword $Secure_String_pwd
[PSCustomObject]@{
Nom = $sn
Prenom = $givenname
OU = $ou
Description= $description
Login = $SAM
Lettre_lecteur = $HomeDrive
Dossier_personnel = $HomeDirectory
Chemin_profil = $ProfilePath
ScriptLogon = $ScriptLogon
Mot_de_passe = $Password
}
}
$NewUsers | Export-Csv -path "C:\Users\Administrateur\Desktop\export.csv" -Append -NoTypeInformation -Delimiter ";"
Pourtant quand je teste cette fonction directement dans le module powershell active directory, j'ai bien un changement et non une suppression qui s'opère:
FONCTION
function Remove-DiacriticsAndSpaces
{
Param(
[String]$inputString
)
#replace diacritics
$sb = [Text.Encoding]::ASCII.GetString([Text.Encoding]::GetEncoding("Cyrillic").GetBytes($inputString))
#remove spaces and anything the above function may have missed
return($sb -replace '[^a-z0-9]', '')
}
Remove-DiacriticsAndSpaces -inputString Etê@
Ete
Pour info, voici le contenu de mon fichier de d'import:
Nom;Prenom;Classe;Identifiant
LOUIS;Virgile;102;6082
LOUIS;Victor;102;6078
PETIT;Lisa;104;4890
PETIT;Lou;502;4886
DUPOND;Assia;309;3701
DUPOND;Ambrine;610;7802
LOUIS;Virgile;102;6003
LOUIS;Victor;102;6004
PETIT;Lisa;104;4805
PETIT;Lou;502;4806
Pétit;Jêan;900,9874
Et voici le résultat de mon fichier d'export en fin de traitement:
"Nom";"Prenom";"OU";"Description";"Login";"Lettre_lecteur";"Dossier_personnel";"Chemin_profil";"ScriptLogon";"Mot_de_passe"
"DUPOND";"Ambrine";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$610";"adupond";"U";"\\test\test";"C:\users";"test";"2474487K"
"LOUIS";"Virgile";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis";"U";"\\test\test";"C:\users";"test";"5994973F"
"LOUIS";"Victor";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis1";"U";"\\test\test";"C:\users";"test";"6261547K"
"PETIT";"Lisa";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit";"U";"\\test\test";"C:\users";"test";"5252585B"
"PETIT";"Lou";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit1";"U";"\\test\test";"C:\users";"test";"1385456W"
"DUPOND";"Assia";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$309";"adupond1";"U";"\\test\test";"C:\users";"test";"9362423L"
"LOUIS";"Virgile";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis2";"U";"\\test\test";"C:\users";"test";"8762193J"
"LOUIS";"Victor";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$102";"vlouis3";"U";"\\test\test";"C:\users";"test";"6423677J"
"PETIT";"Lisa";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$104";"lpetit2";"U";"\\test\test";"C:\users";"test";"4748119D"
"PETIT";"Lou";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$502";"lpetit3";"U";"\\test\test";"C:\users";"test";"4541454I"
"Ptit";"Jan";"OU=importusers,DC=Mondomaine,DC=local";"GCU-ORG{$ELEVE}$900,9874";"jptit";"U";"\\test\test";"C:\users";"test";"1356626V"
On voit bien à la dernière ligne que les caractères avec accent ont été supprimés.
Dernière édition: il y a 2 ans 1 mois par witness.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.077 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Doublons générés lors du traitement import AD