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

[VBScript] AD: Forcer le changement de mot de passer à l'ouverture d'une session

9 réponses
Avatar
Benoit B.
Bonjour,
avant de commencer, je vous préviens, je suis très nul en programmation et
autre. Ma logique n'est pas très logique... Et je n'ai jamais fais de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois vraiment
mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la case
de mes utilisateurs sur mon active directory pour forcer le changement de
mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de passe"
de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script Microsoft
Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active Directory nommé
benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ou=BandC,ou=FRSRN,ou=Training,dc=benoit,dc=net") 'test
étant le compte visé, BandC, FRN, training étant les OU créées, et dc
référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides trouver, par
contre, je ne dois pas du tout être bon pour ce qui est de ma variable a
modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît

9 réponses

Avatar
Stéphane [MS]
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
======================================
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en programmation et
autre. Ma logique n'est pas très logique... Et je n'ai jamais fais de
VB...

Je viens vous voir pour avoir une petite aide, parce que je dois vraiment
mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la case
de mes utilisateurs sur mon active directory pour forcer le changement de
mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de
passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script Microsoft
Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active Directory
nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net") 'test
étant le compte visé, BandC, FRN, training étant les OU créées, et dc
référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides trouver,
par contre, je ne dois pas du tout être bon pour ce qui est de ma variable
a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît



Avatar
Benoit B.
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne veut rien
savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie Sub/End
Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer la
constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== > Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en programmation
et autre. Ma logique n'est pas très logique... Et je n'ai jamais fais de
VB...

Je viens vous voir pour avoir une petite aide, parce que je dois vraiment
mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la
case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de
passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script Microsoft
Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active Directory
nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU créées, et
dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides trouver,
par contre, je ne dois pas du tout être bon pour ce qui est de ma
variable a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît







Avatar
Stéphane [MS]
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et l'emplacement du
compte (test) à modifier dans l'arborescence (training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui est
sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne veut
rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer la
constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en programmation
et autre. Ma logique n'est pas très logique... Et je n'ai jamais fais de
VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la
case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de
passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active Directory
nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU créées, et
dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides trouver,
par contre, je ne dois pas du tout être bon pour ce qui est de ma
variable a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît











Avatar
Benoit B.
Bonjour,

Dans l'arborescence de la console, c'est dans cet ordre:
benoit.net
BandC
FRSRN
Training

Et le user Test est dans la dernière OU training

Si je comprends bien, je devrais plutôt mettre :
LDAP://cn=test,ou=Traning, ou=FRSRN,ouºndC,dc¾noit,dc=net

Benoit


"Stéphane [MS]" a écrit dans le message de
news: %
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et l'emplacement
du compte (test) à modifier dans l'arborescence (training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui est
sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne veut
rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer la
constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >>> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en programmation
et autre. Ma logique n'est pas très logique... Et je n'ai jamais fais
de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la
case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de
passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active Directory
nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU créées,
et dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides trouver,
par contre, je ne dois pas du tout être bon pour ce qui est de ma
variable a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît















Avatar
Benoit B.
J'ai ce code qui fonctionne :

Set objUser = GetObject _
("LDAP://CN=test,OU=Training,OU=FRSRN,OUºndC,DC¾noit,DC=net")
objUser.Put "pwdLastSet", 0
objUser.SetInfo

En fait, la case "le mot de passe n'expire jamais" était cochée, ce qui
rentré en conflit avec le but du scipt.

Je vais donc créer un script pour décocher la case n'expire jamais, lancer
celui pour forcer le changement de mot de passe et ensuite, recocher la case
mot de passe n'expire jamais.

Je vais refaire des tests, mais il est possible d'appliquer ce script à tous
les users d'un même OU ? Et les sous OU ?

Benoit


"Benoit B." a écrit dans le message de news:
438d8093$0$23657$
Bonjour,

Dans l'arborescence de la console, c'est dans cet ordre:
benoit.net
BandC
FRSRN
Training

Et le user Test est dans la dernière OU training

Si je comprends bien, je devrais plutôt mettre :
LDAP://cn=test,ou=Traning, ou=FRSRN,ouºndC,dc¾noit,dc=net

Benoit


"Stéphane [MS]" a écrit dans le message de
news: %
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et l'emplacement
du compte (test) à modifier dans l'arborescence (training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui est
sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne veut
rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer la
constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >>>> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>>>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en
programmation et autre. Ma logique n'est pas très logique... Et je
n'ai jamais fais de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la
case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de
passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active Directory
nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU créées,
et dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides
trouver, par contre, je ne dois pas du tout être bon pour ce qui est
de ma variable a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît



















Avatar
Benoit B.
Après plusieurs test, j'arrive bien à décocher la case pour désactiver le
mode "mot de passe n'expire jamais"

Et ensuite, la 2nd partie de mon scipt coche la case "l'utilisateur devra
changer de mot de passe"

Par contre, cela je n'arrive à l'appliquer uniquement que sur un utilisateur
précis, ds mes exemples précédents "test"
Il est possible de viser tous les utilisateurs d'une même OU ?

Pour faire clair, voici l'arbre d'un AD que je teste.
benoit.net
BandC
FRSRN
Training

Est-il possible d'appliquer le script à tous les users se trouvant dans l'OU
de BandC ? C'est à dire, appliqué aux user dans BandC, FRSRN et aussi dans
training ?

J'ai tenté ees objUser et le caractère %, mais rien n'y fait. Et je ne
trouve pas mon bonheur dans le livre Scripting Guide.

Merci pour vos lumières.

Benoît
"Benoit B." a écrit dans le message de news:
438d87ad$0$4338$
J'ai ce code qui fonctionne :

Set objUser = GetObject _
("LDAP://CN=test,OU=Training,OU=FRSRN,OUºndC,DC¾noit,DC=net")
objUser.Put "pwdLastSet", 0
objUser.SetInfo

En fait, la case "le mot de passe n'expire jamais" était cochée, ce qui
rentré en conflit avec le but du scipt.

Je vais donc créer un script pour décocher la case n'expire jamais, lancer
celui pour forcer le changement de mot de passe et ensuite, recocher la
case mot de passe n'expire jamais.

Je vais refaire des tests, mais il est possible d'appliquer ce script à
tous les users d'un même OU ? Et les sous OU ?

Benoit


"Benoit B." a écrit dans le message de news:
438d8093$0$23657$
Bonjour,

Dans l'arborescence de la console, c'est dans cet ordre:
benoit.net
BandC
FRSRN
Training

Et le user Test est dans la dernière OU training

Si je comprends bien, je devrais plutôt mettre :
LDAP://cn=test,ou=Traning, ou=FRSRN,ouºndC,dc¾noit,dc=net

Benoit


"Stéphane [MS]" a écrit dans le message de
news: %
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et l'emplacement
du compte (test) à modifier dans l'arborescence (training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui est
sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne veut
rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer
la constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >>>>> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>>>>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en
programmation et autre. Ma logique n'est pas très logique... Et je
n'ai jamais fais de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher la
case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot de
passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active
Directory nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU créées,
et dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides
trouver, par contre, je ne dois pas du tout être bon pour ce qui est
de ma variable a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît























Avatar
Stéphane [MS]
Bonjour,

J'ai toujours eu du mal avec la récursivité, donc, là encore, je ne sais pas
si cela va complètement traiter la question
=============================================================== ChangePassword ("LDAP://OUºndC,DC¾noit,DC=net")

Sub ChangePassword(strOUaChanger)
Set objGroup = GetObject(strOUaChanger)
For Each objTrouve in objGroup
Select Case objTrouve.Class
Case "User"
Set objUser = GetObject (objTrouve.Name)
objUser.Put "pwdLastSet", 0
objUser.SetInfo
Case "organizationUnit"
ChangePassword(objTrouve)
End Select
Next
End Sub
================================================================ A tester...

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438dc038$0$4331$
Après plusieurs test, j'arrive bien à décocher la case pour désactiver le
mode "mot de passe n'expire jamais"

Et ensuite, la 2nd partie de mon scipt coche la case "l'utilisateur devra
changer de mot de passe"

Par contre, cela je n'arrive à l'appliquer uniquement que sur un
utilisateur précis, ds mes exemples précédents "test"
Il est possible de viser tous les utilisateurs d'une même OU ?

Pour faire clair, voici l'arbre d'un AD que je teste.
benoit.net
BandC
FRSRN
Training

Est-il possible d'appliquer le script à tous les users se trouvant dans
l'OU de BandC ? C'est à dire, appliqué aux user dans BandC, FRSRN et aussi
dans training ?

J'ai tenté ees objUser et le caractère %, mais rien n'y fait. Et je ne
trouve pas mon bonheur dans le livre Scripting Guide.

Merci pour vos lumières.

Benoît
"Benoit B." a écrit dans le message de news:
438d87ad$0$4338$
J'ai ce code qui fonctionne :

Set objUser = GetObject _
("LDAP://CN=test,OU=Training,OU=FRSRN,OUºndC,DC¾noit,DC=net")
objUser.Put "pwdLastSet", 0
objUser.SetInfo

En fait, la case "le mot de passe n'expire jamais" était cochée, ce qui
rentré en conflit avec le but du scipt.

Je vais donc créer un script pour décocher la case n'expire jamais,
lancer celui pour forcer le changement de mot de passe et ensuite,
recocher la case mot de passe n'expire jamais.

Je vais refaire des tests, mais il est possible d'appliquer ce script à
tous les users d'un même OU ? Et les sous OU ?

Benoit


"Benoit B." a écrit dans le message de news:
438d8093$0$23657$
Bonjour,

Dans l'arborescence de la console, c'est dans cet ordre:
benoit.net
BandC
FRSRN
Training

Et le user Test est dans la dernière OU training

Si je comprends bien, je devrais plutôt mettre :
LDAP://cn=test,ou=Traning, ou=FRSRN,ouºndC,dc¾noit,dc=net

Benoit


"Stéphane [MS]" a écrit dans le message de
news: %
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et
l'emplacement du compte (test) à modifier dans l'arborescence
(training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui
est sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne
veut rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer
la constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message
de news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >>>>>> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>>>>>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en
programmation et autre. Ma logique n'est pas très logique... Et je
n'ai jamais fais de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher
la case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot
de passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active
Directory nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _
("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU
créées, et dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides
trouver, par contre, je ne dois pas du tout être bon pour ce qui est
de ma variable a modifier et de ma déclaration d'Active Directory.
Une personne pourrait me filer une aide précieuse ou des pistes vers
lesquelles je pourrais me tourner SVP ? Ou un site bien documenté ?

Merci d'avance pour votre aide

Benoît



























Avatar
Benoit B.
Bonsoir,

à priori cela ne fonctionne pas.
Impression qu'il faut viser le user directement...

Sinon p-e mettre les utilisateurs dans un fichier txt, mais bon...

Je suis perdu un peu... lol

Merci pour votre aide en tout cas !

Benoît

"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

J'ai toujours eu du mal avec la récursivité, donc, là encore, je ne sais
pas si cela va complètement traiter la question
=============================================================== > ChangePassword ("LDAP://OUºndC,DC¾noit,DC=net")

Sub ChangePassword(strOUaChanger)
Set objGroup = GetObject(strOUaChanger)
For Each objTrouve in objGroup
Select Case objTrouve.Class
Case "User"
Set objUser = GetObject (objTrouve.Name)
objUser.Put "pwdLastSet", 0
objUser.SetInfo
Case "organizationUnit"
ChangePassword(objTrouve)
End Select
Next
End Sub
================================================================ > A tester...

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438dc038$0$4331$
Après plusieurs test, j'arrive bien à décocher la case pour désactiver le
mode "mot de passe n'expire jamais"

Et ensuite, la 2nd partie de mon scipt coche la case "l'utilisateur devra
changer de mot de passe"

Par contre, cela je n'arrive à l'appliquer uniquement que sur un
utilisateur précis, ds mes exemples précédents "test"
Il est possible de viser tous les utilisateurs d'une même OU ?

Pour faire clair, voici l'arbre d'un AD que je teste.
benoit.net
BandC
FRSRN
Training

Est-il possible d'appliquer le script à tous les users se trouvant dans
l'OU de BandC ? C'est à dire, appliqué aux user dans BandC, FRSRN et
aussi dans training ?

J'ai tenté ees objUser et le caractère %, mais rien n'y fait. Et je ne
trouve pas mon bonheur dans le livre Scripting Guide.

Merci pour vos lumières.

Benoît
"Benoit B." a écrit dans le message de news:
438d87ad$0$4338$
J'ai ce code qui fonctionne :

Set objUser = GetObject _
("LDAP://CN=test,OU=Training,OU=FRSRN,OUºndC,DC¾noit,DC=net")
objUser.Put "pwdLastSet", 0
objUser.SetInfo

En fait, la case "le mot de passe n'expire jamais" était cochée, ce qui
rentré en conflit avec le but du scipt.

Je vais donc créer un script pour décocher la case n'expire jamais,
lancer celui pour forcer le changement de mot de passe et ensuite,
recocher la case mot de passe n'expire jamais.

Je vais refaire des tests, mais il est possible d'appliquer ce script à
tous les users d'un même OU ? Et les sous OU ?

Benoit


"Benoit B." a écrit dans le message de news:
438d8093$0$23657$
Bonjour,

Dans l'arborescence de la console, c'est dans cet ordre:
benoit.net
BandC
FRSRN
Training

Et le user Test est dans la dernière OU training

Si je comprends bien, je devrais plutôt mettre :
LDAP://cn=test,ou=Traning, ou=FRSRN,ouºndC,dc¾noit,dc=net

Benoit


"Stéphane [MS]" a écrit dans le message de
news: %
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et
l'emplacement du compte (test) à modifier dans l'arborescence
(training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui
est sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne
veut rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même déclarer
la constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message
de news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >>>>>>> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>>>>>>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en
programmation et autre. Ma logique n'est pas très logique... Et je
n'ai jamais fais de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher
la case de mes utilisateurs sur mon active directory pour forcer le
changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot
de passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active
Directory nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _

("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU
créées, et dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides
trouver, par contre, je ne dois pas du tout être bon pour ce qui
est de ma variable a modifier et de ma déclaration d'Active
Directory.
Une personne pourrait me filer une aide précieuse ou des pistes
vers lesquelles je pourrais me tourner SVP ? Ou un site bien
documenté ?

Merci d'avance pour votre aide

Benoît































Avatar
Benoit B.
Bonsoir,

est-il possible de viser tous les users d'une même OU ?
A priori, je ne peux que m'orienter vers un script, avec une ligne LDA par
OU.
Mais pour viser plusieurs users, que puis-je utiliser ? Je n'ai rien trouvé
sur le net ni dans le bouquin, tous les exemples vise un seul user.
J'ai tenté un hypothétique %username% mais bon, je suis trop optimiste !

Merci de votre aide,

Benoît


"Benoit B." a écrit dans le message de news:
438f232a$0$4300$
Bonsoir,

à priori cela ne fonctionne pas.
Impression qu'il faut viser le user directement...

Sinon p-e mettre les utilisateurs dans un fichier txt, mais bon...

Je suis perdu un peu... lol

Merci pour votre aide en tout cas !

Benoît

"Stéphane [MS]" a écrit dans le message de
news:
Bonjour,

J'ai toujours eu du mal avec la récursivité, donc, là encore, je ne sais
pas si cela va complètement traiter la question
=============================================================== >> ChangePassword ("LDAP://OUºndC,DC¾noit,DC=net")

Sub ChangePassword(strOUaChanger)
Set objGroup = GetObject(strOUaChanger)
For Each objTrouve in objGroup
Select Case objTrouve.Class
Case "User"
Set objUser = GetObject (objTrouve.Name)
objUser.Put "pwdLastSet", 0
objUser.SetInfo
Case "organizationUnit"
ChangePassword(objTrouve)
End Select
Next
End Sub
================================================================ >> A tester...

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438dc038$0$4331$
Après plusieurs test, j'arrive bien à décocher la case pour désactiver
le mode "mot de passe n'expire jamais"

Et ensuite, la 2nd partie de mon scipt coche la case "l'utilisateur
devra changer de mot de passe"

Par contre, cela je n'arrive à l'appliquer uniquement que sur un
utilisateur précis, ds mes exemples précédents "test"
Il est possible de viser tous les utilisateurs d'une même OU ?

Pour faire clair, voici l'arbre d'un AD que je teste.
benoit.net
BandC
FRSRN
Training

Est-il possible d'appliquer le script à tous les users se trouvant dans
l'OU de BandC ? C'est à dire, appliqué aux user dans BandC, FRSRN et
aussi dans training ?

J'ai tenté ees objUser et le caractère %, mais rien n'y fait. Et je ne
trouve pas mon bonheur dans le livre Scripting Guide.

Merci pour vos lumières.

Benoît
"Benoit B." a écrit dans le message de news:
438d87ad$0$4338$
J'ai ce code qui fonctionne :

Set objUser = GetObject _
("LDAP://CN=test,OU=Training,OU=FRSRN,OUºndC,DC¾noit,DC=net")
objUser.Put "pwdLastSet", 0
objUser.SetInfo

En fait, la case "le mot de passe n'expire jamais" était cochée, ce qui
rentré en conflit avec le but du scipt.

Je vais donc créer un script pour décocher la case n'expire jamais,
lancer celui pour forcer le changement de mot de passe et ensuite,
recocher la case mot de passe n'expire jamais.

Je vais refaire des tests, mais il est possible d'appliquer ce script à
tous les users d'un même OU ? Et les sous OU ?

Benoit


"Benoit B." a écrit dans le message de news:
438d8093$0$23657$
Bonjour,

Dans l'arborescence de la console, c'est dans cet ordre:
benoit.net
BandC
FRSRN
Training

Et le user Test est dans la dernière OU training

Si je comprends bien, je devrais plutôt mettre :
LDAP://cn=test,ou=Traning, ou=FRSRN,ouºndC,dc¾noit,dc=net

Benoit


"Stéphane [MS]" a écrit dans le message
de news: %
Bonjour,

Si le compte à modifier est bien :
LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net
vous avez spécifié le nom de votre domaine (benoit.net) et
l'emplacement du compte (test) à modifier dans l'arborescence
(training/frsrn/bandc).

Normalement, cela suffit.

Est-ce que BandC est bien une sous-unité d'organisation de frsrn qui
est sous training ?

Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438c2f17$0$4336$
Bonjour,

c'est ce que j'ai fais, en modifiant les noms utilisés, mais il ne
veut rien savoir.
Si je mets ces 4 lignes, j'ai ce resultat :

(1, 1) (NULL): Cet objet ne se trouve pas sur le serveur.

Cette erreur est supprimée lorsque je crée une entrée et une sortie
Sub/End Sub (Voir mon premier post)

Et je pense que c'est très léger en code, il faut quand même
déclarer la constante et/ou le nom de l'Active Directory...
non?

Merci,
Benoît


"Stéphane [MS]" a écrit dans le message
de news:
Bonjour,

Vu sur Script Center :
Require Users to Change Their Password
====================================== >>>>>>>> Set objUser = GetObject _
("LDAP://CN=myerken,OU=management,DCúbrikam,DC=com")

objUser.Put "pwdLastSet", 0
objUser.SetInfo
====================================== >>>>>>>>
Cdlt
Stéphane

"Benoit B." a écrit dans le message de news:
438ad2ff$0$4328$
Bonjour,
avant de commencer, je vous préviens, je suis très nul en
programmation et autre. Ma logique n'est pas très logique... Et je
n'ai jamais fais de VB...

Je viens vous voir pour avoir une petite aide, parce que je dois
vraiment mal m'y prendre.
J'essai depuis 2 semaines, de créer un script permettant de cocher
la case de mes utilisateurs sur mon active directory pour forcer
le changement de mot de passe à l'ouverture de session.
(L'utilisateur devra changer son mot de passe)
Le but étant de cocher la case "L'utilisateur devra changer de mot
de passe" de tous mes utilisateurs de l'Active Directory.
En me baladant sur le site de microsoft et le bouquin de script
Microsoft Scripting Guide, j'arrive à ce stade pour mon programme:


Const ADS_UF_PASSWORD_EXPIRED = -1 'Déclaration de la variable à
modifier

Win2KLogonDomain = "@benoit.net" 'Déclaration de mon Active
Directory nommé benoit.net[/#0000ff]

Sub PassWord(UserName)
Set objUser = GetObject _

("LDAP://cn=test,ouºndC,ou=FRSRN,ou=Training,dc¾noit,dc=net")
'test étant le compte visé, BandC, FRN, training étant les OU
créées, et dc référence à mon Active directory
objUser.Put "pwdLastSet", 0 'Changement de l'état de la
variable.[/#0000ff]
objUser.SetInfo
End Sub


Le "corps" de mon prog doit être bon si je me réfère aux aides
trouver, par contre, je ne dois pas du tout être bon pour ce qui
est de ma variable a modifier et de ma déclaration d'Active
Directory.
Une personne pourrait me filer une aide précieuse ou des pistes
vers lesquelles je pourrais me tourner SVP ? Ou un site bien
documenté ?

Merci d'avance pour votre aide

Benoît