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

Creation de groupe dans AD après analyse du contenu d'un reperto ir

4 réponses
Avatar
berthelagrandepatte
Bonjour

C'est un peu tordu mais je dois le faire. Je dois executer un script vbs
dans un repertoire racine qui liste dans ce dernier tous les repertoires
creés assez regulierement. Ensuite, il doit créer les groupes dans active
directory aux noms de ces repertoires si il n'existe pas. Il doit aussi
donner les droits a ces repertoires en lecture a un groupe et full pour un
autre.

J'ai commencé le script ainsi:

-------------------------------------------------------------------------
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = CurrentPath

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

For each oFolder in oFolderCol

If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oFolder.Name)

objGroup.Put "sAMAccountName", oFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

End If

droit = WshShell.Run("xcacls.exe " & strCurrentPath & "\" & oFolder.Name &
" /T /G TOTO\" & oFolder.Name & ":R TOTO\Machin:R "&chr(34)&"Admins du
domaine"&chr(34)&":F /Y", 0, TRUE)

Next


------------------------------------------------------------------------------------------

j'utilise xcalcs.exe pour les droits aux repertoires. Maintenant je bloque
car je n'arrive pas à créer les groupes dans l'AD.

Si vous avez des idées. merci

4 réponses

Avatar
Yannick SCHAPPLER
Bonsoir,

Qu'est-ce qui cloche exactement ?
J'utilise un bout de script similaire pour créer des groupes dans AD, et ton
code semble bon.

As-tu des précisions ?

Yannick SCHAPPLER



"berthelagrandepatte" a
écrit dans le message de news:

Bonjour

C'est un peu tordu mais je dois le faire. Je dois executer un script vbs
dans un repertoire racine qui liste dans ce dernier tous les repertoires
creés assez regulierement. Ensuite, il doit créer les groupes dans active
directory aux noms de ces repertoires si il n'existe pas. Il doit aussi
donner les droits a ces repertoires en lecture a un groupe et full pour un
autre.

J'ai commencé le script ainsi:

-------------------------------------------------------------------------
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = CurrentPath

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

For each oFolder in oFolderCol

If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oFolder.Name)

objGroup.Put "sAMAccountName", oFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

End If

droit = WshShell.Run("xcacls.exe " & strCurrentPath & "" & oFolder.Name &
" /T /G TOTO" & oFolder.Name & ":R TOTOMachin:R "&chr(34)&"Admins du
domaine"&chr(34)&":F /Y", 0, TRUE)

Next


------------------------------------------------------------------------------------------

j'utilise xcalcs.exe pour les droits aux repertoires. Maintenant je bloque
car je n'arrive pas à créer les groupes dans l'AD.

Si vous avez des idées. merci


Avatar
berthelagrandepatte
quand j'execute ce script, aucun objet est créé" dans l'AD.mon OU test est
vierge avant l'execution de ce script et reste vierge après l'exécution de ce
ernier. Et pourtant, j'ai créé des dossiers dans le rep. racine.

???? je ne vois pas


Bonsoir,

Qu'est-ce qui cloche exactement ?
J'utilise un bout de script similaire pour créer des groupes dans AD, et ton
code semble bon.

As-tu des précisions ?

Yannick SCHAPPLER



"berthelagrandepatte" a
écrit dans le message de news:

Bonjour

C'est un peu tordu mais je dois le faire. Je dois executer un script vbs
dans un repertoire racine qui liste dans ce dernier tous les repertoires
creés assez regulierement. Ensuite, il doit créer les groupes dans active
directory aux noms de ces repertoires si il n'existe pas. Il doit aussi
donner les droits a ces repertoires en lecture a un groupe et full pour un
autre.

J'ai commencé le script ainsi:

-------------------------------------------------------------------------
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = CurrentPath

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

For each oFolder in oFolderCol

If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oFolder.Name)

objGroup.Put "sAMAccountName", oFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

End If

droit = WshShell.Run("xcacls.exe " & strCurrentPath & "" & oFolder.Name &
" /T /G TOTO" & oFolder.Name & ":R TOTOMachin:R "&chr(34)&"Admins du
domaine"&chr(34)&":F /Y", 0, TRUE)

Next


------------------------------------------------------------------------------------------

j'utilise xcalcs.exe pour les droits aux repertoires. Maintenant je bloque
car je n'arrive pas à créer les groupes dans l'AD.

Si vous avez des idées. merci







Avatar
Yannick SCHAPPLER
Je risquerais une hypothese de dysfonctionnement sur les lignes :
- strCurrentPath = CurrentPath
- If Not groupExist(oFolder.Name,searchpath) Then


J'aurais mis strCurrentPath = "." pour utiliser le répertoire courant,
CurrentPath ne me dit rien au niveau référence VBScript, sauf si il s'agit
là d'un "raccourci de language" que tu as mis à titre d'exemple.

De même "groupExist", est-ce une fonction ou procédure de ton script ???

Un moyen simple pour tester si ton souci vient de ton test, est de le
commenter afin de simplement créer un groupe, dans ce cas tu fixes
simplement ton objet oFolder sur une valeur donnée, et tu commentes ta
boucle et ton test, afin de voir si un groupe se créée ou non.
Si il se créée, le souci vient de ton test, sinon c'est qu'il y'a autre
chose (que j'avoue ne toujours pas discerner !!!).

Cela donnerait un truc like this :
______________________________________________________________________________________
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = "c:temp"

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
' Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

' For each oFolder in oFolderCol

' If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oRootFolder.Name)

objGroup.Put "sAMAccountName", oRootFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

' End If

' droit = WshShell.Run("xcacls.exe " & strCurrentPath & "" & oFolder.Name
&
' " /T /G TOTO" & oFolder.Name & ":R TOTOMachin:R "&chr(34)&"Admins du
' domaine"&chr(34)&":F /Y", 0, TRUE)

' Next


______________________________________________________________________________________


A voir si cela peut te (nous) mettre sur la voie et cibler un peu plus d'où
vient le souci, pour le corriger.


Cordialement,

Yannick SCHAPPLER





"berthelagrandepatte" a
écrit dans le message de news:

quand j'execute ce script, aucun objet est créé" dans l'AD.mon OU test est
vierge avant l'execution de ce script et reste vierge après l'exécution de
ce
ernier. Et pourtant, j'ai créé des dossiers dans le rep. racine.

???? je ne vois pas


Bonsoir,

Qu'est-ce qui cloche exactement ?
J'utilise un bout de script similaire pour créer des groupes dans AD, et
ton
code semble bon.

As-tu des précisions ?

Yannick SCHAPPLER



"berthelagrandepatte" a
écrit dans le message de news:

Bonjour

C'est un peu tordu mais je dois le faire. Je dois executer un script
vbs
dans un repertoire racine qui liste dans ce dernier tous les
repertoires
creés assez regulierement. Ensuite, il doit créer les groupes dans
active
directory aux noms de ces repertoires si il n'existe pas. Il doit aussi
donner les droits a ces repertoires en lecture a un groupe et full pour
un
autre.

J'ai commencé le script ainsi:

-------------------------------------------------------------------------
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = CurrentPath

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

For each oFolder in oFolderCol

If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oFolder.Name)

objGroup.Put "sAMAccountName", oFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

End If

droit = WshShell.Run("xcacls.exe " & strCurrentPath & "" &
oFolder.Name &
" /T /G TOTO" & oFolder.Name & ":R TOTOMachin:R "&chr(34)&"Admins du
domaine"&chr(34)&":F /Y", 0, TRUE)

Next


------------------------------------------------------------------------------------------

j'utilise xcalcs.exe pour les droits aux repertoires. Maintenant je
bloque
car je n'arrive pas à créer les groupes dans l'AD.

Si vous avez des idées. merci









Avatar
berthelagrandepatte
Merci de tes réponses

Effectivement Group exist n'existe pas dans vbs, je le pensais. Je dois te
preciser que je ne suis pas encore hyper à l'aise avec vbs. Il faut créer une
fonction ou procedure, mais la je ne vois pas comment le faire.

Ou peut etre existe t-il une solution qui me permettrait de comparer le
contenu du dossier racine et le contenu de l'Ou de facon a créer le groupe si
un sous dossier a été rajouté.

Merci d'avance


Je risquerais une hypothese de dysfonctionnement sur les lignes :
- strCurrentPath = CurrentPath
- If Not groupExist(oFolder.Name,searchpath) Then


J'aurais mis strCurrentPath = "." pour utiliser le répertoire courant,
CurrentPath ne me dit rien au niveau référence VBScript, sauf si il s'agit
là d'un "raccourci de language" que tu as mis à titre d'exemple.

De même "groupExist", est-ce une fonction ou procédure de ton script ???

Un moyen simple pour tester si ton souci vient de ton test, est de le
commenter afin de simplement créer un groupe, dans ce cas tu fixes
simplement ton objet oFolder sur une valeur donnée, et tu commentes ta
boucle et ton test, afin de voir si un groupe se créée ou non.
Si il se créée, le souci vient de ton test, sinon c'est qu'il y'a autre
chose (que j'avoue ne toujours pas discerner !!!).

Cela donnerait un truc like this :
______________________________________________________________________________________
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = "c:temp"

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
' Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

' For each oFolder in oFolderCol

' If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oRootFolder.Name)

objGroup.Put "sAMAccountName", oRootFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

' End If

' droit = WshShell.Run("xcacls.exe " & strCurrentPath & "" & oFolder.Name
&
' " /T /G TOTO" & oFolder.Name & ":R TOTOMachin:R "&chr(34)&"Admins du
' domaine"&chr(34)&":F /Y", 0, TRUE)

' Next


______________________________________________________________________________________


A voir si cela peut te (nous) mettre sur la voie et cibler un peu plus d'où
vient le souci, pour le corriger.


Cordialement,

Yannick SCHAPPLER





"berthelagrandepatte" a
écrit dans le message de news:

quand j'execute ce script, aucun objet est créé" dans l'AD.mon OU test est
vierge avant l'execution de ce script et reste vierge après l'exécution de
ce
ernier. Et pourtant, j'ai créé des dossiers dans le rep. racine.

???? je ne vois pas


Bonsoir,

Qu'est-ce qui cloche exactement ?
J'utilise un bout de script similaire pour créer des groupes dans AD, et
ton
code semble bon.

As-tu des précisions ?

Yannick SCHAPPLER



"berthelagrandepatte" a
écrit dans le message de news:

Bonjour

C'est un peu tordu mais je dois le faire. Je dois executer un script
vbs
dans un repertoire racine qui liste dans ce dernier tous les
repertoires
creés assez regulierement. Ensuite, il doit créer les groupes dans
active
directory aux noms de ces repertoires si il n'existe pas. Il doit aussi
donner les droits a ces repertoires en lecture a un groupe et full pour
un
autre.

J'ai commencé le script ainsi:

-------------------------------------------------------------------------
On Error Resume Next

Const ADS_SCOPE_SUBTREE = 2
Const ADS_GROUP_TYPE_GLOBAL_GROUP = &h2
Const ADS_GROUP_TYPE_SECURITY_ENABLED = &h80000000

searchpath="LDAP://ou=test,dc=toto,dc=fr"

strCurrentPath = CurrentPath

Set fs = CreateObject("Scripting.FileSystemObject")
Set oRootFolder = fs.GetFolder(strCurrentPath)
Set oFolderCol = oRootFolder.SubFolders

Set WshShell = WScript.CreateObject("WScript.Shell")

For each oFolder in oFolderCol

If Not groupExist(oFolder.Name,searchpath) Then

Set objOU = GetObject(searchpath)
Set objGroup = objOU.Create("Group", "cn=" & oFolder.Name)

objGroup.Put "sAMAccountName", oFolder.Name
objGroup.Put "groupType", ADS_GROUP_TYPE_GLOBAL_GROUP Or
ADS_GROUP_TYPE_SECURITY_ENABLED
objGroup.SetInfo

WScript.Sleep(3000)

End If

droit = WshShell.Run("xcacls.exe " & strCurrentPath & "" &
oFolder.Name &
" /T /G TOTO" & oFolder.Name & ":R TOTOMachin:R "&chr(34)&"Admins du
domaine"&chr(34)&":F /Y", 0, TRUE)

Next


------------------------------------------------------------------------------------------

j'utilise xcalcs.exe pour les droits aux repertoires. Maintenant je
bloque
car je n'arrive pas à créer les groupes dans l'AD.

Si vous avez des idées. merci