Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

11 réponses
Avatar
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

10 réponses

1 2
Avatar
Gilles LAURENT [MVP]
"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
Avatar
dav8669
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
Avatar
Gilles LAURENT [MVP]
"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
Avatar
dav8669
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 ';'
Avatar
Gilles LAURENT [MVP]
"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
Avatar
dav8669
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
Avatar
Gilles LAURENT [MVP]
"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
Avatar
Gilles LAURENT [MVP]
Oops !

export-csv -encoding 'default'

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Avatar
dav8669
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
Avatar
dav8669
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
1 2