OVH Cloud OVH Cloud

Mettre un user dans un groupe à partir d'un fichier

4 réponses
Avatar
Georges
Bonjour,

J'ai un fichier de nom en txt avec un nom de user par ligne

et je lis ce fichier pour donner une appartenance =E0 un groupe de cet
user

j'ai =E9crit ce script, mais j'ai une erreur =E0 la ligne UserObj.SetInfo
(l'op=E9ration demand=E9e n'est pas compatible...)

avez vous une id=E9e ?

Script :

Const ADS_PROPERTY_APPEND =3D 3
Set objSysinfo=3DWScript.CreateObject("ADSystemInfo")


Dim oFs, oFile
Dim strRecords, strRecord

' d=E9finition des constantes
Const File =3D "monfichier.txt"
Const ForReading =3D 1

' initialisation des objets
set oFs =3D CreateObject ("Scripting.FileSystemObject")

' ouverture du fichier
Set oFile =3D oFs.OpenTextFile (File, ForReading)

' lecture de tous les enregistrements
strRecords =3D oFile.ReadAll


' parcours des enregistrements
For Each strRecord In Split (strRecords, VBCrLf)



userName =3D strRecord
set UserObj =3D GetObject("LDAP://" & objsysinfo.UserName)

UserObj.PutEx ADS_PROPERTY_APPEND, "member",
Array("cn=3DMonGroup,ou=3DMonOU,dc=3DMonDomaine,dc=3Dcom")
UserObj.SetInfo
=20
Next

' fermeture du fichier
oFile.Close



Merci pour votre aide

4 réponses

Avatar
Georges

j'ai écrit ce script, mais j'ai une erreur à la ligne UserObj.SetInfo
(l'opération demandée n'est pas compatible...)


J'ai résolu mon problème avec ce script qui marche

Pour ceux qui en auraient besoin ;=))

Couper ici ------------

Option Explicit
Dim strOU, strOU_Site, strGroup, strUser, strDNSDomain
Dim objRootLDAP, objGroup, objUser
Dim oFs, oFile
Dim strRecords, strRecord, liste, user, unite_org

' définition des constantes
Const File = "monfichier.txt"
Const ForReading = 1
strOU_Site = "OU=MonOuSite,"


' initialisation des objets
set oFs = CreateObject ("Scripting.FileSystemObject")

' ouverture du fichier
Set oFile = oFs.OpenTextFile (File, ForReading)

' lecture de tous les enregistrements
strRecords = oFile.ReadAll


' parcours des enregistrements
For Each strRecord In Split (strRecords, VBCrLf)


liste = Split(strRecord,",",-1, 1)


user = liste(0)
unite_org = liste(1)

strOU = "OU=" & unite_org & "," & strOU_Site
strUser = "CN=" & user & ","
strGroup = "CN=MonGroup,"

' Bind to Active Directory and get LDAP name
Set objRootLDAP = GetObject("LDAP://RootDSE")
strDNSDomain = objRootLDAP.Get("DefaultNamingContext")

' Add (str)User to (str)Group
Set objUser = GetObject("LDAP://"& strUser _
& strOU & strDNSDomain)
Set objGroup = GetObject("LDAP://"& strGroup _
& strOU_Site & strDNSDomain)
objGroup.add(objUser.ADsPath)

' WScript.Echo "Check " & strOU & " for " & strGroup & " = " &
strUser

Next

Wscript.Quit

' End of Group Add VBScript

couper ici --------------

le fichier txt
<----
nom1,ou1
nom2,ou2

etc ...
--->

Avatar
Gilles LAURENT
"Georges" a écrit dans le message de
news:
| Bonjour,

Bonjour,

| J'ai un fichier de nom en txt avec un nom de user par ligne
| et je lis ce fichier pour donner une appartenance à un groupe de cet
| user

+++ Format du fichier de noms Accounts.txt
administrateur
test1
test2

+++ Usage
addUsersToGroup <group>

+++ Exemple
>cscript addUsersToGroup.vbs testgrp

--- Couper ici : addUsersToGroup.vbs ---

Option Explicit

' déclaration des variables
Dim oFs, oGrp, oFile, oUser
Dim strUser

' définition des constantes
Const ForReading = 1
Const File = "Accounts.txt"

' initialisation des objets
Set oFs = CreateObject ("Scripting.FileSystemObject")
Set oGrp = GetObject ("WinNT://./" & WScript.Arguments(0))

' lecture des enregistrements
Set oFile = oFs.OpenTextFile (File, ForReading)

' parcours des comptes utilisateurs
For Each strUser In Split (oFile.ReadAll, VBCrLf)
If strUser <> "" Then
' bind uniquement pour résoudre le nom de domaine
Set oUser = GetObject ("WinNT://./" & strUser)
' ajout du compte utilisateur dans le groupe
oGrp.Add (oUser.ADsPath)
End If
Next

--- Couper ici : addUsersToGroup.vbs ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Gilles LAURENT
"Gilles LAURENT" a écrit dans le message de
news:uUIq%23%

La version PowerShell ;-)

+++ Format du fichier de noms Accounts.txt
administrateur
test1
test2

+++ Usage
addUsersToGroup <group>

+++ Exemple
>powershell .addUsersToGroup.ps1 testgrp

--- Couper ici : addUsersToGroup.ps1 ---

Function GetLdapPath ($cat, $obj) {
$oDs=New-Object System.DirectoryServices.DirectorySearcher
$oDs.Filter = "(&(objectCategory=$cat)(sAMAccountName=$obj))"
$oDs.FindOne().Path
}

$oGrp=[ADSI](GetLdapPath Group $args)
gc accounts.txt | % {
$oGrp.PSBase.Invoke("add",(GetLdapPath User $_))
}

--- Couper ici : addUsersToGroup.ps1 ---

--
Gilles LAURENT
http://glsft.free.fr
Avatar
Georges


La version PowerShell ;-)

--
Gilles LAURENT
http://glsft.free.fr



Merci beaucoup Gilles pour votre coup de main
Georges