Question
Fonction mot de passe
- witness
- Auteur du sujet
- Hors Ligne
- Membre premium
Réduire
Plus d'informations
- Messages : 120
- Remerciements reçus 1
il y a 2 ans 9 mois #31011
par witness
Fonction mot de passe a été créé par witness
Bonjour,
Cette fonction me permet de générer des mots de passe aléatoire:
Seulement, l'ordre des caractère est aussi aléatoire.
Ce que j'aimerais, c'est avoir 7 chiffres aléatoire + une lettre majuscule.
J'ai donc enlever la ponctuation et les lettres en minuscules.
J'obtiens donc:
Ce qui est normal car à aucun moment j'ai défini l'ordre des caractères, et c'est sans doute là que ça se complique...
Il faudrait que je puisse lui dire que les 7 premiers caractères doivent être des chiffres ( j'ai enlevé le zéro aussi car il y a des petits qui doivent mettre les mots de passe et ils confondent souvent le zéro avec la lettre O).et le dernier une lettre en majuscule.
Merci merci.
Cette fonction me permet de générer des mots de passe aléatoire:
Function get-randompassword ($length = 8){
$punc = 46..46
$digits = 48..57
$letters = 65..90 + 97..122
$password = get-random -count $length `
-input ($punc + $digits + $letters) | % -begin { $aa = $null } `
-process {$aa += [char]$_} `
-end {$aa}
return $password.ToString()}
Seulement, l'ordre des caractère est aussi aléatoire.
Ce que j'aimerais, c'est avoir 7 chiffres aléatoire + une lettre majuscule.
J'ai donc enlever la ponctuation et les lettres en minuscules.
Function get-randompassword ($length = 8){
$digits = 49..57
$letters = 65..90
$password = get-random -count $length `
-input ($digits + $letters) | % -begin { $aa = $null } `
-process {$aa += [char]$_} `
-end {$aa}
return $password.ToString()}
J'obtiens donc:
get-randompassword -length 8
931T7N8G
Ce qui est normal car à aucun moment j'ai défini l'ordre des caractères, et c'est sans doute là que ça se complique...
Il faudrait que je puisse lui dire que les 7 premiers caractères doivent être des chiffres ( j'ai enlevé le zéro aussi car il y a des petits qui doivent mettre les mots de passe et ils confondent souvent le zéro avec la lettre O).et le dernier une lettre en majuscule.
Merci merci.
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 9 mois #31012
par witness
Réponse de witness sur le sujet Fonction mot de passe
Et aussi si vous pouviez m'expliquer à quoi sert ce symbole ` qu'il y à la fin de ces lignes
Merci
$password = get-random -count $length `
-input ($digits + $letters) | % -begin { $aa = $null } `
-process {$aa += [char]$_} `
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 2 ans 9 mois #31016
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet Fonction mot de passe
Hello !
J'avais une autre proposition pour générer un mot de passe composé de 7 chiffres et 1 caractère. C'est plus court que ta proposition mais ça ne répond pas complètement à ton besoin car des zéros peuvent s'y trouver :
Ceci étant dit, on pourrait très bien faire une petite variante qui remplacerait les zéros s'il y en avait :
J'avais une autre proposition pour générer un mot de passe composé de 7 chiffres et 1 caractère. C'est plus court que ta proposition mais ça ne répond pas complètement à ton besoin car des zéros peuvent s'y trouver :
'{0}{1}' -f (get-random -Minimum 100000 -Maximum 999999), [char](get-random -Minimum 65 -Maximum 90)
Ceci étant dit, on pourrait très bien faire une petite variante qui remplacerait les zéros s'il y en avait :
$pwd = '{0}{1}' -f (get-random -Minimum 100000 -Maximum 999999), [char](get-random -Minimum 65 -Maximum 90)
$pwd -replace '0',(Get-Random -Minimum 1 -Maximum 9)
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
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 8 mois #31029
par witness
Réponse de witness sur le sujet Fonction mot de passe
Salut Arnaud,
Merci pour cette solution, j'avoue qu'elle est plus simple pour ce que je veux.
J'ai complété ton code car je ne voulais pas non plus de la lettre O
En effet, les petits pourraient confondre avec zéro
Du coup ça donne ça:Est-ce que j'ai bon ?
Je n'étais pas sûr, en mettant deux fois l'opérateur de remplacement à la suite, que ça fonctionnerait, mais ça à l'air de prendre d'après mes tests.
Je suis resté toute la nuit à lancer la commande et je n'ai pas vu un seul O passé (je déconne au cas où).
Cela dit, je doute que pour exclure un caractère, ce soit la meilleure solution, c'est une combine qui semble fonctionner mais ce n'est pas disons très propre car pour être complète cette commande devrait exclure la lettre O et la remplacer par toutes les autres lettres en majuscule et ne pas s'arrêter à N
Merci.
Merci pour cette solution, j'avoue qu'elle est plus simple pour ce que je veux.
J'ai complété ton code car je ne voulais pas non plus de la lettre O
En effet, les petits pourraient confondre avec zéro
Du coup ça donne ça:
$pwd = '{0}{1}' -f (get-random -Minimum 1000000 -Maximum 9999999), [char](get-random -Minimum 65 -Maximum 90)
$pwd -replace '0',(Get-Random -Minimum 1 -Maximum 9) -replace 'O',[char](Get-Random -Minimum 65 -Maximum 78)
Je n'étais pas sûr, en mettant deux fois l'opérateur de remplacement à la suite, que ça fonctionnerait, mais ça à l'air de prendre d'après mes tests.
Je suis resté toute la nuit à lancer la commande et je n'ai pas vu un seul O passé (je déconne au cas où).
Cela dit, je doute que pour exclure un caractère, ce soit la meilleure solution, c'est une combine qui semble fonctionner mais ce n'est pas disons très propre car pour être complète cette commande devrait exclure la lettre O et la remplacer par toutes les autres lettres en majuscule et ne pas s'arrêter à N
Merci.
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 8 mois #31032
par witness
Réponse de witness sur le sujet Fonction mot de passe
Arnaud,
J'ai intégré ton bloc de code à mon script en enlevant la fonction Random-password, seulement je rencontre un problème maintenant lors de la création de mon fichier csv en sortie.
En effet, au lieu d'avoir mes champs dans mon export csv, j'obtiens ceci:
"Length"
"8"
"8"
Voici mon script:
Je ne sais pas pourquoi il m'indique le champ Length avec la valeur 8, ça doit correspondre à quelque chose mais quoi......
J'ai intégré ton bloc de code à mon script en enlevant la fonction Random-password, seulement je rencontre un problème maintenant lors de la création de mon fichier csv en sortie.
En effet, au lieu d'avoir mes champs dans mon export csv, j'obtiens ceci:
"Length"
"8"
"8"
Voici mon script:
$users = import-csv -path "C:\Users\Administrateur\Desktop\importusers.csv" -delimiter ";"
$NewUsers = $users | ForEach-Object {
$sn = $_.Nom
$givenname = $_.Prenom
$ou = "OU=importusers,DC=Mondomaine,DC=local"
$description = $_.Description
$SAM = $givenname.Substring(0,1).ToLower() + $sn.ToLower()
$CN = $givenname + " " + $sn
$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 -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]@{
sn = $sn
givenname = $givenname
ou = $ou
description= $description
SAM = $SAM
CN = $CN
displayName = $displayName
UPN = $UPN
userAccountControl = $userAccountControl
CannotChangePassword = $CannotChangePassword
HomeDrive = $HomeDrive
HomeDirectory = $HomeDirectory
ProfilePath = $ProfilePath
ScriptLogon = $ScriptLogon
Password = $Password
Enabled = $Enabled
}
}
$NewUsers | Export-Csv -path "C:\Users\Administrateur\Desktop\export.csv" -Append -NoTypeInformation -Delimiter ";"
Je ne sais pas pourquoi il m'indique le champ Length avec la valeur 8, ça doit correspondre à quelque chose mais quoi......
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 8 mois - il y a 2 ans 8 mois #31033
par witness
Réponse de witness sur le sujet Fonction mot de passe
J'ai trouvé cette réponse à mon problème sur un forum:
" Parce que [code]Export-Csv prend des objets et génère des propriétés. La seule propriété d'un String[ ] est Length, donc le fichier CSV ne contient que des Lengths."
Pourtant j'ai juste changé la manière dont est généré le mot de passe dans mon script, la configuration de mon export devrait fonctionner.
" Parce que [code]Export-Csv prend des objets et génère des propriétés. La seule propriété d'un String[ ] est Length, donc le fichier CSV ne contient que des Lengths."
Pourtant j'ai juste changé la manière dont est généré le mot de passe dans mon script, la configuration de mon export devrait fonctionner.
Dernière édition: il y a 2 ans 8 mois par witness.
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.095 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Fonction mot de passe