Creation de compte sur active directory

bolos Messages postés 12 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 11 avril 2005 - 19 mai 2003 à 10:29
cs_idji Messages postés 1 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2008 - 21 févr. 2008 à 12:21
je suis en train d'ecrire des script d'automatisation pour la creation de compte utilisateurs sous windows 2000 server et j'ai le probleme suivant:

je créer les comptes a partir de renseignement inscrit sur un document excel.
lorsque je créer un compte, je veux instaurer un mot de passe
(ca ne me pose pas de probleme) mai forcer l'utilisateur a le changer a la prochaine connexion mais a chaque fois lorsque je test le fonctionnement sur une machine cliente, ca me dit "le mot de passe à expiré"

j'utilise ce code pour ce faire:

objUser.Put "pwdLastSet", 1

faut-il faire autre chose?

merci

10 réponses

chronos1981 Messages postés 4 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 19 juin 2003
3 juin 2003 à 16:41
je suis en train d'alaboré le meme genre de programme que toi
mais je trouve pas le code qui me permetrais d'instauré un mot de passe.
pourai tu me transmetre le code ki me permetrai cela.
merci d'avance
0
bolos Messages postés 12 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 11 avril 2005
4 juin 2003 à 09:18
tu prend l'objeu user (objUser par exemple) et tu fais
objUser.setpassword("mdp")
0
chronos1981 Messages postés 4 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 19 juin 2003
4 juin 2003 à 09:30
merci c'est bon, mais est ce que tu pourai m'envoyé ton script
pour que je fasse une comparaison avec le mien, car j'ai quelque probleme avec le loggin.Merci
0
bolos Messages postés 12 Date d'inscription samedi 25 mai 2002 Statut Membre Dernière intervention 11 avril 2005
4 juin 2003 à 10:52
désolé je ne peux pas ce script meme si c moi qui l'ai programmé ne m appartient pas, il appartient à mon employeur mais va voir sur microsoft.com:

http://www.microsoft.com/technet/treeview/default.asp?url=/technet/scriptcenter/default.asp

y a tout ce qu'il faut
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
chronos1981 Messages postés 4 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 19 juin 2003
5 juin 2003 à 11:59
escuse c encore moi, j'aimerais savoir a partir de quoi tu créer tes utilisateurs si c'est a partir d'une base de données,
ou simplement par saisie???
Car moi je cré mes compte a partir d'une base de données,
et j'aimerais bien pouvoir faire des mise a jours de mes
comptes en fonctions des mises a jours faite sur ma base.
est ce d'aprés toi possible??
si oui comment car sur les scripts donnée par microsoft
j'ai rien trouver pour l'update des comptes
0
chronos1981 Messages postés 4 Date d'inscription jeudi 22 mai 2003 Statut Membre Dernière intervention 19 juin 2003
19 juin 2003 à 09:28
slt je sais pas si tu viendra voir ce message mais j'essaye d'attribuer des groupes a mes utilisateur au momen de leur création mais je n'y arrive pas.
Je trouve pas l'attribu qui me permet de faire cela.
pourais tu me doné une partie de code qui pourais faire ça stp merci d'avance
0
basketadonf Messages postés 7 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 25 août 2003
12 août 2003 à 15:59
salut moi aussi je fais la même chose que toi c'est à dire un script de création de comptes (moi je le fais à partir du fichier .csv)

quand tu mets les attributs pour la création du compte (nom, prénom, nom affichés, etc..) tu rajoutes ces lignes suivantes:

set oGroup=objGroup.Create("Group","cn"&strGroupes)
oGroup.Add objStudent.AdsPath
set oGroup=Nothing
objStudent.SetInfo

Explications:

oGroup,objGroup,objStudent et strGroupes sont à déclarés
strGroupes prend le nom de ton groupe
objStudent c'est la variable pour la création du compte (objStudent.Put "sn",..)

J'espère que ce petit morceau de code répond à ta question.

J'en profite pour t'en demander une. Quand je crée les utilisateurs je veux créer un lecteur logique de la forme z:\\serveur\partage\repertoire, le problème c'est que je ne connais pas le bon attribut ni sa syntaxe.
Merci d'avance
0
basketadonf Messages postés 7 Date d'inscription jeudi 27 février 2003 Statut Membre Dernière intervention 25 août 2003
18 août 2003 à 10:54
pour la création de d'un lecteur logique pour un utilisateur grâce à un script, il faut mettre dans le script ce code :

sHomePath="\\Serveur\NomPartage$"
sProfilPath="\\serveur\NomPartageProfil$" %si vous mettez les profils dans un autre répertoire que celui où vous stocké les utilisateurs%
% Lorsqu'on crée les utilisateurs%

strProfilPath=sProfilpath&strHomeDir %strHomeDir correspond au nom du répertoire de l'utilisateur%

strhomeDrive="z"
strhomeDirectory=sHomePath&strHomeDir

%Lorsqu'on ajoute les différents attributs dans les propriétés des comptes%
objEleve.Put "ProfilePath",strProfilepath
objEleve.Put "homedrive",strhomeDrive
objEleve.Put "homeDirectory",strhomeDirectory
objEleve.SetInfo %Enregistrement des modifications%
0
hisham91 Messages postés 57 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 23 janvier 2013
1 déc. 2004 à 11:25
Salut à tous !

Si j'ai bien compris ont peut développer une page d'inscription depuis un site par exemple ce qui permettrait de créer un compte utilisateur directement ?

Parceque c'est un projet que j'essai de mettre en place, le but c'est qu'il y ait des inscriptions et au moment de la validation, celui-ci génère un nouveau compte user avec un repertoir virtuel IIS ainsi que le virtuel FTP.

Je vais bientôt lancer mon activité : il s'agit d'hébergement de site web ASP / ASP.NET réservé aux associations/organisations

Je débute sur VB.NET....
0
cs_idji Messages postés 1 Date d'inscription samedi 12 février 2005 Statut Membre Dernière intervention 21 février 2008
21 févr. 2008 à 12:21
 Pascal

Petit script que j'utilise pour créer mes comptes avec mon logiciel CERBERE AD.

' Déclaration des variables dont nous avons besoin


Dim i,Rfs,fs,FichierInfoClient,FichierResultat,InfoClient,FicPassWord,oFSO,oTS
Dim DomaiPath
Dim DomainName
Dim Domain
Dim NomOU,ClasseGroupe
Dim Description


Dim NomClient,NomCompletClient
Dim LoginClient
Dim PassWordClient
Dim PrenomClient
Dim DescriptionClient
Dim Groupe,strUAC,strProfilePath,strScriptPath
Dim GroupeAdmin, NomOUAdmin
Dim CheminFichierResultat,UNCClient,LecteurReseauClient,LecteurResau
Dim objACE,objDACL,objSD,arrTrustees


Const ADS_UF_ACCOUNTDISABLE = 2      ' le compte ne peut etre desactive


Const ADS_UF_DONT_EXPIRE_PASSWD = &h10000   ' Mot de passse n'expire jamais


Const ADS_ACETYPE_ACCESS_DENIED_OBJECT = &H6  ' Ne peut pas changer de mot de passe
Const ADS_ACEFLAG_OBJECT_TYPE_PRESENT = &H1
Const CHANGE_PASSWORD_GUID = "{ab721a53-1e2f-11d0-9819-00aa0040529b}"
Const ADS_RIGHT_DS_CONTROL_ACCESS = &H100


Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2    'Création des groupes
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000
  
On Error Resume Next
Err.number = vbEmpty


' ***** Définition du fichier Texte où les données sont stockées
''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Set fs = CreateObject("Scripting.FileSystemObject")
 Set FichierInfoClient = fs.openTextFile("D:\Mes Projets\Gestion Client 2004\Exe\InfoClient.txt")


 
' ***** Définition de l'objet dont nous avons besoin.
''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Set WshShell = Wscript.CreateObject("Wscript.Shell")
 Set objConnection = CreateObject("ADODB.Connection")
 Set objCommand = CreateObject("ADODB.Command")


' ***** Connection à Active Directory , repris d'un autre script VBS
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 objConnection.Provider = "ADsDSOObject"
 objConnection.Open "Active Directory Provider"
 Set objCOmmand.ActiveConnection = objConnection


 ' ***** Domaine dans lequel nous voulons créer un utilisateur
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 Set Root = GetObject("[ldap://RootDSE LDAP://RootDSE]")
 DomainPath = Root.Get("DefaultNamingContext")
 DomainName = "LDAP://" & DomainPath
 wscript.echo "Nom du Domaine : " & chr(10) & DomainName


' ***** Initialise les infos
''''''''''''''''''''''''''''
 i=0
 While FichierInfoClient.AtEndOfStream=false and Err.number = vbEmpty        
   i = i + 1
   InfoClient=split(FichierInfoClient.readline,":")
 wend


 Set Domain = GetObject(DomainName)
 LoginClient = InfoClient(0)
 NomClient = InfoClient(1)
 PrenomClient = InfoClient(2)
 PassWordClient = InfoClient(3)
 DescriptionClient = InfoClient(4)
 strUAC="512" 'permet d'activer le compte
 strScriptPath = InfoClient(5)
 GroupeCLient =InfoClient(6)
 NomOUClient = InfoClient(7)
 ClasseGroupe = InfoCLient(8)    'OU où se situe le Groupe Global de sécurité
 GroupeAdmin = InfoClient(9)
 ActivationClient=InfoClient(10)
 UNCClient = InfoCLient(11)
 LecteurReseauClient = InfoClient(12)
 strProfilePath = InfoClient(13)
 NomOUAdmin = InfoClient(14)
 
 NomCompletClient = NomClient & " " & PrenomClient
 LecteurReseau = LecteurReseauClient & ":"
 
wscript.echo "Info Client : " & chr(10) & LoginClient & ":" & NomClient & ":" & PrenomClient & ":" & PassWordClient & ":" &GroupeClient & ":" & NomOUClient & ":" & ClasseGroupe &  ":" & GroupeAdmin & ":" & ActivationClient & ";" & LecteurReseauClient & ";" & LecteurReseau & ";"
'wscript.echo "Info Client : " & chr(10)  & UNCClient & ":" & LecteurReseauClient
wscript.echo "Script client : " & chr(10) & strScriptPath




' ***** Création de l'OU si n'existe pas *******
'***********************************************


Erreur_avant = Err.number
Err.number = vbEmpty


Set objTestOU = GetObject("[ldap://OU LDAP://OU]=" & NomOUClient & "," & DomainPath)


If  objTestOU.st = True Then
 Set objDomain = GetObject("LDAP://" & DomainPath)
 Set objOU = objDomain.Create("organizationalUnit", "OU=" & NomOUClient)
 objOU.SetInfo
 wscript.echo "Création de l'OU : "  & NomOUClient
End If
Erreur = Err.Description
If Err.number <> vbEmpty  Then Err.number=Erreur_avant


 


' ***** Création de l'utilisateur dans l'OU
 ''''''''''''''''''''''''''''''''''''''''''''
 Description = "Organizational Unit"
 Set OU_Client= GetObject("[ldap://OU LDAP://OU]=" & NomOUClient & "," & DomainPath)
 Set adsUser = OU_Client.Create("user", "CN=" & NomCompletClient)
wscript.echo "Création du Client dans l'OU : " & chr(10) & NomOUClient




 '*****  Nom et Description des dossier Système (Perso et Profile)
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 sHomePath="[file://\\0880036L-P\Utilisateurs$\ \\0880036L-P\Utilisateurs$\]"
 sProfilPath="[file://\\0880036L-P\Profils$\ \\0880036L-P\Profils$\]"




 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 ' Définit les sAMAccountName et userPrincipalName
 ' attribués pour chaque utilisateur
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 DescriptionClient = DescriptionClient & " " & ClasseGroupe
 if GroupeClient <> GroupeAdmin then
 wscript.echo "Création d'un utilisateur : " & chr(10) & NomOUClient
  adsUser.Put "displayname",NomCompletClient  
  adsUser.Put "sAMAccountName",  LoginClient
  adsUser.Put "userPrincipalName", LoginClient
  adsUser.put "description", DescriptionClient
  if PrenomClient <> "" then adsUser.put "GivenName",PrenomClient
 adsUser.put "sn",NomClient    '
  adsUser.put "homeDrive", LecteurReseau         ' Lecteur réseau
  adsUser.put "homeDirectory",  UNCClient 'Chemin réseau
  adsUser.SetInfo
 else
wscript.echo "Création d'un Administrateur : " & chr(10) & NomOUClient
  adsUser.put "sn",NomClient
  adsUser.Put "displayname",NomCompletClient
  adsUser.Put "sAMAccountName",  LoginClient
  adsUser.Put "userPrincipalName", LoginClient
  adsUser.put "description", DescriptionClient
  adsUser.SetInfo
 end if
 
 '***********  Mise en place du Mot de Passe  **************
 intUAC = adsUser.Get("userAccountControl")
 If ADS_UF_DONT_EXPIRE_PASSWD AND intUAC Then
Wscript.Echo "Already enabled"
 Else
    adsUser.Put "userAccountControl", intUAC XOR ADS_UF_DONT_EXPIRE_PASSWD
    adsUser.SetInfo
WScript.Echo "Password never expires is now enabled"
 End If


 adsUser.SetPassWord PassWordCLient    ' Définition Mot de Passe
 adsUser.SetInfo
wscript.echo "Mot de Passe créé.", Chr(10),Chr(10),"Cliquez pour continuer."
 


 if strProfilePath <>"" then
  adsUser.Put "ProfilePath",strProfilePath  'Définition du Profile
  adsUser.SetInfo
wscript.echo "Profile Activé.", Chr(10),Chr(10),"Cliquez pour continuer." 
 end if
   
 if strScriptPath <>"" then
   adsUser.Put "scriptPath",strScriptPath   ' Définition du Script
   adsUser.SetInfo  
wscript.echo "Profile et SCript Activé.", Chr(10),Chr(10),"Cliquez pour continuer."
 end if
 
 
 If ActivationClient = "YES" then
  adsUser.AccountDisabled = FALSE    'Activation du compte
  adsUser.SetInfo
wscript.echo "Compte Créé Activé !", Chr(10),Chr(10),"Cliquez pour continuer."
 else
  intUAC = adsUser.Get("userAccountControl")
  adsUser.Put "userAccountControl", intUAC OR ADS_UF_ACCOUNTDISABLE
  adsUser.SetInfo
wscript.echo "Compte Créé Désactivé", Chr(10),Chr(10),"Cliquez pour continuer."
 end if




' ****** Définition du Groupe Global de Utilisateur
wscript.echo "Groupe Global du GroupeClient : ", Chr(10),Chr(10),GroupeClient , "Groupe Global du GroupeAdmin : ", Chr(10),Chr(10),GroupeAdmin




'****** Définition du Groupe Global du Compte créé ******
'********************************************************
  'call CreateGroupe(GroupeClient) ' Vérifie si Groupe existe
 
 
 
  ' ***** Test Groupe Global si n'existe pas *******
 '***********************************************
 Erreur_Avant = Err.number
 Err.number = vbEmpty
 
 Set objGroup = GetObject ("[ldap://cn LDAP://cn]=" & GroupeClient & ",ou=" & NomOUAdmin & "," & DomainPath)
 Set objNtSecurityDescriptor = objGroup.Get("ntSecurityDescriptor")
 
 Erreur = Err.Description
 If Err.number <>  vbEmpty Then
  
  '****** Création du Groupe Global si n'existe pas *******
  '********************************************************   
  Set objTestOU = GetObject("[ldap://OU LDAP://OU]=" & NomOUAdmin & "," & DomainPath)
  Set objGroup = objTestOU.Create("Group", "cn=" & GroupeClient)
   
  objGroup.Put "sAMAccountName", GroupeClient
  objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or ADS_GROUP_TYPE_SECURITY_ENABLED
  objGroup.Put "info", "Groupe Global de sécurité " & GroupeClient
  objGroup.Put "Description", "Groupe Global de sécurité " & GroupeClient  
  objGroup.SetInfo
  'MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description & Err.Source)
  WScript.Sleep 100


 End If
 
 Err.number = Erreur_Avant
 
 
 'strGroup = "ou=Administrations, " & DomainPath
  strGroup = "ou=" & NomOUAdmin &"," & DomainPath
  Set objGroup = GetObject("LDAP://" & strGroup )
  Set oGroup = objGroup.Create("Group","cn=" & GroupeClient) 'Ajoute l'utilisateur dans son groupe Global
  oGroup.Add adsUser.AdsPath
  Set oGroup=Nothing




'******* Définition du Groupe CLASSE de Utilisateur si c'est un élève
If ClasseGroupe<>"" Then


 ' ***** Test Groupe Global si n'existe pas *******
 '***********************************************
 Erreur_Avant = Err.number
 Err.number = vbEmpty
 
 Set objGroup = GetObject ("[ldap://cn LDAP://cn]=" & ClasseGroupe & ",ou=" & NomOUAdmin & "," & DomainPath)
 Set objNtSecurityDescriptor = objGroup.Get("ntSecurityDescriptor")
 
 Erreur = Err.Description
 If Err.number <>  vbEmpty Then
  
  '****** Création du Groupe Global si n'existe pas *******
  '********************************************************   
  Set objTestOU = GetObject("[ldap://OU LDAP://OU]=" & NomOUAdmin & "," & DomainPath)
  Set objGroup = objTestOU.Create("Group", "cn=" & ClasseGroupe)
   
  objGroup.Put "sAMAccountName", ClasseGroupe
  objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or ADS_GROUP_TYPE_SECURITY_ENABLED
  objGroup.Put "info", "Groupe Global de sécurité " & ClasseGroupe
  objGroup.Put "Description", "Groupe Global de sécurité " & ClasseGroupe  
  objGroup.SetInfo
  'MsgBox ("Error # " & CStr(Err.Number) & " " & Err.Description & Err.Source)
  WScript.Sleep 100


 End If
 
Erreur = Err.number


 
 strGroup = "ou=" & NomOUAdmin &"," & DomainPath
 set objGroup = GetObject("LDAP://" & strGroup )
 set oGroup = objGroup.Create("Group","cn=" & ClasseGroupe) 'Ajoute l'utilisateur dans son groupe
 oGroup.Add adsUser.AdsPath
 set oGroup=Nothing
 
  Err.number = Erreur_Avant
  
end if


 


If 1=2 Then '------------------ NE MARCHE PAS !!! -----------------------------------------------------------------------


 ' ********* Mise en place de l'Interdiction de modifier le mot de passe
 '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 'Set adsUser = GetObject("[ldap://cn LDAP://cn]=" & LoginClient & ",OU= 0880036L-P,dc=e-lorraine,dc=com")
 Set objSD = adsUser.Get("ntSecurityDescriptor")
 Set objDACL = objSD.DiscretionaryAcl
 arrTrustees = array("nt authority\self", "EVERYONE")
 
 For Each strTrustee in arrTrustees
     Set objACE = CreateObject("AccessControlEntry")
     objACE.Trustee = strTrustee
     objACE.AceFlags = 0
     objACE.AceType = ADS_ACETYPE_ACCESS_DENIED_OBJECT
     objACE.Flags = ADS_ACEFLAG_OBJECT_TYPE_PRESENT
     objACE.ObjectType = CHANGE_PASSWORD_GUID
     objACE.AccessMask = ADS_RIGHT_DS_CONTROL_ACCESS
     objDACL.AddAce objACE
 Next
 
 objSD.DiscretionaryAcl = objDACL
 adsUser.Put "nTSecurityDescriptor", objSD
 adsUser.SetInfo
 wscript.echo "Mise en place des restrictions", Chr(10),Chr(10),"Cliquez pour continuer."
 
End If '----------------------------------------------------------------------------------------------




' ***** Définition du Fichier Texte où enregistrer le résultat du Script
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 CheminFichierResultat = "C:\Temp\Res_CreateClient.txt"
 'CheminFichierResultat = "Res_CreateClient.txt"
 Set Rfs = CreateObject("Scripting.FileSystemObject")
 Set FichierResultat = Rfs.CreateTextFile(CheminFichierResultat,True)
 


wscript.echo "Eleves créés.", Chr(10),Chr(10),"Cliquez pour finir."


If Err.Number = vbEmpty Then
    FichierResultat.WriteLine "FIN"
    FichierResultat.close
    wscript.echo "Compte créé.", Chr(10),Chr(10),"Cliquez pour finir."


Else
     FichierResultat.WriteLine "ERROR"
    
     FichierResultat.close
   wscript.echo "Erreur...  ", Err, Chr(10),Chr(10),"Cliquez pour finir."


End If


 


 
0
Rejoignez-nous