Générer un mot de passe aléatoirement en Powershell

Le
dav8669
Bonjour,
Je cherche à générer pour chaque utilisateur un mot de passe aléatoire pour une première connection ultérieure puis de l'exporter dans un fichier csv.
Je ne sais pas trop comment faire.
Merci pour votre aider
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles LAURENT [MVP]
Le #18783021
"dav8669" news:
| Bonjour,

Bonjour,

| Je cherche à générer pour chaque utilisateur un mot de passe
| aléatoire pour une première connection ultérieure puis de l'exporter
| dans un fichier csv.
| Je ne sais pas trop comment faire.
| Merci pour votre aider

Le script ci-dessous permet de générer dix mots de passe de huit
caractères puis d'exporter ces mots de passe au format csv dans le
fichier password.csv du répertoire courant. La boucle 1..10 est donnée
ici à titre d'exemple. Il sera en effet nécessaire de parcourir
l'annuaire Active Directory à la recherche des utilisateurs puis de
réinitialiser le mot de passe via la méthode SetPassword.

--- CodeSnippet.ps1 ---
[Reflection.Assembly]::LoadWithPartialName("System.Web")>$null
$list=@(); foreach ($user in 1..10) {
$list+=[System.Web.Security.Membership]::GeneratePassword(8,0) |
select `
@{name='user';expression={$user}},
@{name='pwd';expression={$_}}|
}
$list|export-csv -force -notype sample.csv
--- CodeSnippet.ps1 ---

Note: Le mot de passe devra être transmis à l'utilisateur ;-)

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
dav8669
Le #18784451
Gilles LAURENT [MVP] a écrit le 28/02/2009 à 04h36 :
"dav8669" a écrit dans le
message de
news:
| Bonjour,

Bonjour,

| Je cherche à générer pour chaque utilisateur un mot de
passe
| aléatoire pour une première connection ultérieure puis
de l'exporter
| dans un fichier csv.
| Je ne sais pas trop comment faire.
| Merci pour votre aider

Le script ci-dessous permet de générer dix mots de passe de huit
caractères puis d'exporter ces mots de passe au format csv dans le
fichier password.csv du répertoire courant. La boucle 1..10 est
donnée
ici à titre d'exemple. Il sera en effet nécessaire de parcourir
l'annuaire Active Directory à la recherche des utilisateurs puis de
réinitialiser le mot de passe via la méthode SetPassword.

--- CodeSnippet.ps1 ---
[Reflection.Assembly]::LoadWithPartialName("System.Web")>$null
$list=@(); foreach ($user in 1..10) {
$list+=[System.Web.Security.Membership]::GeneratePassword(8,0) |
select `
@{name='user';expression={$user}},
@{name='pwd';expression={$_}}|
}
$list|export-csv -force -notype sample.csv
--- CodeSnippet.ps1 ---

Note: Le mot de passe devra être transmis à l'utilisateur ;-)

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr


Bonjour,

Peux tu m'expliquer ce que fait la ligne suivante que je ne comprends pas.
[Reflection.Assembly]::LoadWithPartialName("System.Web")>$null
et la méthode LoadWithPartialName qui Charge un assembly à partir du répertoire de l'application ou du Global Assembly Cache en utilisant un nom partiel.
Qu'est ce qu'un assembly ?
Merci
Gilles LAURENT [MVP]
Le #18785561
"dav8669" news:
| Bonjour,

Bonjour,

| Peux tu m'expliquer ce que fait la ligne suivante que je ne
| comprends pas.
| [Reflection.Assembly]::LoadWithPartialName("System.Web")>$null
| et la méthode LoadWithPartialName qui Charge un assembly à partir du
| répertoire de l'application ou du Global Assembly Cache en utilisant
| un nom partiel. Qu'est ce qu'un assembly ?
| Merci

Du point de vue d'un scripter PowerShell, une assembly peut être
considérée comme une librairie .NET. Une fois chargée, celle-ci expose
des objets qui pourront être manipulés via ses méthodes et ses
propriétés. Pour reprendre l'exemple ci-dessus, le fait de charger
l'assembly "System.Web" permet d'accéder à l'objet
"System.Web.Security.Membership" et de ce fait à sa méthode
"GeneratePassword". Le chargement de cette assembly est ici réalisé
grace à la méthode "LoadWithPartialName". Cette méthode permet de
charger l'assembly en utilisant son nom court (donc sans spécifier des
critères tels que version minimale, culture supportée, ...). C'est
pourquoi cette méthode est maintenant obsolète (deprecated) et remplacée
par les méthodes "Load" et "LoadFrom" qui elles, nécessitent des
critères de chargement.

En espérant avoir répondu à vos interrogations. Si cela n'est pas clair
alors n'hésitez pas à revenir vers nous.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
dav8669
Le #18799551
Gilles LAURENT [MVP] a écrit le 28/02/2009 à 14h49 :
"dav8669" a écrit dans le
message de
news:
| Bonjour,

Bonjour,

| Peux tu m'expliquer ce que fait la ligne suivante que je ne
| comprends pas.
| [Reflection.Assembly]::LoadWithPartialName("System.Web")>$null
| et la méthode LoadWithPartialName qui Charge un assembly à
partir du
| répertoire de l'application ou du Global Assembly Cache en utilisant
| un nom partiel. Qu'est ce qu'un assembly ?
| Merci

Du point de vue d'un scripter PowerShell, une assembly peut être
considérée comme une librairie .NET. Une fois chargée,
celle-ci expose
des objets qui pourront être manipulés via ses méthodes et
ses
propriétés. Pour reprendre l'exemple ci-dessus, le fait de
charger
l'assembly "System.Web" permet d'accéder à l'objet
"System.Web.Security.Membership" et de ce fait à sa
méthode
"GeneratePassword". Le chargement de cette assembly est ici
réalisé
grace à la méthode "LoadWithPartialName". Cette
méthode permet de
charger l'assembly en utilisant son nom court (donc sans spécifier des
critères tels que version minimale, culture supportée, ...).
C'est
pourquoi cette méthode est maintenant obsolète (deprecated) et
remplacée
par les méthodes "Load" et "LoadFrom" qui elles,
nécessitent des
critères de chargement.

En espérant avoir répondu à vos interrogations. Si cela
n'est pas clair
alors n'hésitez pas à revenir vers nous.

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr


Bonjour,
Je cherche à fusionner ton script avec celui ci pour insérer l'attribution aléatoire d'un mot de passe à chaque utilisateur. Merci
$ldapQuery = "(&(objectCategory=person)(objectClass=user))"
$de = [ADSI]"LDAP://*/ou*,ou=*,dc=*,dc=*"
$ads = new-object system.directoryservices.directorysearcher -argumentlist $de,$ldapQuery
$complist = $ads.findall()

@(foreach ($i in $complist) {
$i | select @{n="samaccountname";e={$_.properties.samaccountname}},
@{n="cn";e={$_.properties.cn}},
@{n="employeeid";e={$_.properties.employeeid}},
@{n="memberof";e={$_.properties.memberof}}

}) | Export-Csv c:partagepassword.csv -force -notype -delimiter ';'
Gilles LAURENT [MVP]
Le #18803041
"dav8669" wrote:

Bonjour,



Bonjour,

Je cherche à fusionner ton script avec celui ci pour insérer l'attribution
aléatoire d'un mot de passe à chaque utilisateur. Merci


[...]

Le script ci-dessous recherche tout d'abord les utilisateurs présents dans
l'annuaire Active Directory, génère un mot de passe aléatoire pour chaque
utilisateur puis sauvegarde le couple (dn, password) dans un fichier au
format CSV. Ensuite, le mot de passe de chaque utilisateur est réinitialisé.

Note: La commande de réinitialisation du mot de passe est inactive (#)

--- CodeSnippet.ps1 ---
[Reflection.Assembly]::LoadWithPartialName("System.Web")>$null

$ldapQuery="(&(objectCategory=person)(objectClass=user))"
$de=[ADSI]"LDAP://*/ou*,ou=*,dc=*,dc=*"
$ads=new-object system.directoryservices.directorysearcher `
-argumentlist $de,$ldapQuery
$complist = $ads.findall()
$list=@(); foreach ($user in $complist) {
$list+=[System.Web.Security.Membership]::GeneratePassword(8,0) |
select `
@{n='dn';e={$user.properties.distinguishedname}},
@{n='pwd';e={$_}}
}
$list|export-csv -force -notype -delimiter ';' sample.csv
foreach ($user in $list) {
"Processing $($user.dn) ..."
$aduser=[ADSI]"LDAP://$($user.dn)"
#$aduser.SetPassword($user.pwd)
}
--- CodeSnippet.ps1 ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
dav8669
Le #18803421
Gilles LAURENT [MVP] a écrit le 02/03/2009 à 14h29 :
"dav8669" wrote:

Bonjour,




Bonjour,

Je cherche à fusionner ton script avec celui ci pour insérer
l'attribution
aléatoire d'un mot de passe à chaque utilisateur. Merci



[...]

Le script ci-dessous recherche tout d'abord les utilisateurs présents
dans
l'annuaire Active Directory, génère un mot de passe
aléatoire pour chaque
utilisateur puis sauvegarde le couple (dn, password) dans un fichier au
format CSV. Ensuite, le mot de passe de chaque utilisateur est
réinitialisé.

Note: La commande de réinitialisation du mot de passe est inactive (#)

--- CodeSnippet.ps1 ---
[Reflection.Assembly]::LoadWithPartialName("System.Web")>$null

$ldapQuery="(&(objectCategory=person)(objectClass=user))"
$de=[ADSI]"LDAP://*/ou*,ou=*,dc=*,dc=*"
$ads=new-object system.directoryservices.directorysearcher `
-argumentlist $de,$ldapQuery
$complist = $ads.findall()
$list=@(); foreach ($user in $complist) {
$list+=[System.Web.Security.Membership]::GeneratePassword(8,0) |
select `
@{n='dn';e={$user.properties.distinguishedname}},
@{n='pwd';e={$_}}
}
$list|export-csv -force -notype -delimiter ';' sample.csv
foreach ($user in $list) {
"Processing $($user.dn) ..."
$aduser=[ADSI]"LDAP://$($user.dn)"
#$aduser.SetPassword($user.pwd)
}
--- CodeSnippet.ps1 ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr


Merci tout fonctionne !
En revanchance j'ai un problème au niveau de la récupération des caractères spéciaux accentués é,è,ç,ï... Ces caractères sont récupérés et remplacés par un "?". Comment faire pour les conserver?
Merci
Gilles LAURENT [MVP]
Le #18803901
"dav8669" wrote:

Merci tout fonctionne !
En revanchance j'ai un problème au niveau de la récupération des caractères
spéciaux accentués é,è,ç,ï... Ces caractères sont récupérés et remplacés par un
"?". Comment faire pour les conserver?



export-xml -encoding 'default' ...

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Gilles LAURENT [MVP]
Le #18804111
Oops !

export-csv -encoding 'default'

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
dav8669
Le #18828871
Gilles LAURENT [MVP] a écrit le 02/03/2009 à 16h12 :
Oops !

export-csv -encoding 'default'

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr


Bonjour,

Et si je veux récupérer d'autres informationns comme le displayname, le givenname ou le sn.
A quel endroit du script l'insérer ?
Merci
dav8669
Le #18834291
dav8669 a écrit le 05/03/2009 à 14h29 :
Gilles LAURENT [MVP] a écrit le 02/03/2009 à 16h12 :
Oops !

export-csv -encoding 'default'

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr



Bonjour,

Et si je veux récupérer d'autres informationns comme le
displayname, le givenname ou le sn.
A quel endroit du script l'insérer ?
Merci


Quand je les ajoute au niveau du select
@{n='givenname';e={$user.properties.givenname}},
@{n='sn';e={$user.properties.givenname}},

Lors de la récupération du fichier csv, ces champs ne sont pas remplis.
Merci
Publicité
Poster une réponse
Anonyme