locked
Vbsa intégrant xcacls.vbs RRS feed

  • Question

  •  

    Bonjour,

    Je désire à partir d'une liste d'utilisateurs créer des dossiers en partage, jusqu'ici ça se passe bien avec ce que j'ai pu trouver sur le net. Mais maintenant j'aimerai changer les permissions sur le dossier pour supprimer "tout le monde" dans l'onglet sécurité et ajouter les utilisateurs "administrateur" et le "quidam" créer dans mes OU avec un autre script, cet user porte en fait le même nom que son dossier en partage.

    J'ai vu qu'il fallait utiliser xcacls.vbs, je suis allé sur le site de microsoft mais ils ne l'utilise qu'en ligne de comande et moi j'aimerai insérer cette commande dans la routine du scritp ci-dessous :

     

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

    On Error Resume Next

    Const FILE_SHARE = 0
    Const MAXIMUM_CONNECTIONS = 10

    Dim oFSO, oShell, oFichierCpt, NomFichierCpt, fichierExiste, Chemin
    Dim nomFolder, ligne, tableau
    Dim bjWMIService, objNewShare

    Set oFSO = CreateObject("Scripting.FileSystemObject")
    Set oShell = CreateObject("WScript.Shell")

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
         & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
    Set objNewShare = objWMIService.Get("Win32_Share")

    'lecture du chemin pour la création des dossiers

     chemin = InputBox("Entrez le chemin complet où seront créés les dossiers :", "")
     
    'Lecture du fichier texte des comptes

    fichierExiste = 1
    Do While fichierExiste = 1
     nomFichierCpt = InputBox("Entrez le nom du fichier contenant les comptes :", "")
     nomFichierCpt = ("D:\TestFolder\" & nomFichierCpt & ".txt")
     If oFSO.FileExists(nomFichierCpt) Then
      Set oFichierCpt = oFSO.OpenTextFile(nomFichierCpt)
      fichierExiste = 0
      Else
       fichierExiste = 1
       MsgBox "Ce fichier n'existe pas, recommencer !"
     End If
    Loop

    'Création des dossiers utilisateurs

    CreerDossier()
     Do Until oFichierCpt.AtEndOfStream
      ligne = oFichierCpt.ReadLine
      tableau = Split(ligne,",")
             AjouterDossier tableau(2)
        Loop

    msgbox "Création des dossiers utilisateurs terminée !"

    oFichierCpt.Close  'Fermeture du fichier des comptes


    'Routine de creation des dossiers

    Sub AjouterDossier(nomFolder)
     oFSO.CreateFolder(chemin & "\" & nomFolder)
     errReturn = objNewShare.Create _
           ("D:\TestFolder\" & nomFolder, nomFolder, FILE_SHARE, _
               MAXIMUM_CONNECTIONS, "Commentaire")
      Wscript.Echo errReturn

      /Je voudrais placer cette commande xcacls.vbs ici pour modifier les permissions au fur et à mesure de la création des dossiers, vu que le nom du dossier est le même que celui de l'utilisateur dans l'AD et est contenu dans "nomFolder"/ 
    End Sub

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

    Si quelqu'un a une solution pour intégrer cette commande merci d'avance, j'ai vu aussi qu'on pouvait utiliser subinacl.vbs, est-ce que c'est mieux adapté ? Rb

    • Déplacé ashawani_dubey jeudi 4 février 2010 05:06 Forums Consolidation (Origine :Windows Server 2003 – Services réseaux)
    jeudi 4 septembre 2008 12:56

Toutes les réponses

  • Bonjour,

    A force de chercher et de tester j'ai trouvé sur le net quelques infos, voici la procédure avec Xcacls si elle peut servir pour d'autres.

    Cordialement, Rb

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

    'Routine de creation des dossiers et attribution des permissions

    Sub AjouterDossier(nomFolder)
     oFSO.CreateFolder(chemin & "\" & nomFolder)
     errReturn = objNewShare.Create _
           (chemin & "\" & nomFolder, nomFolder, FILE_SHARE, _
               MAXIMUM_CONNECTIONS, "Commentaire")
    ' Wscript.Echo errReturn
     strCommand = chemin & "\" & nomFolder & " /T /G administrateurs:F " & nomFolder & ":M"
     oShell.Run "cscript xcacls.vbs " & strCommand,0  '0 pour ne pas afficher la page invite de commande
    End Sub

    -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    lundi 8 septembre 2008 07:55
  • Re,

    Cette routine pour changer les permissions fonctionne très bien sur mon poste en Xp mais lorsque j'ai voulu la tester sur mon controleur de domaine en Win2003Server, ça ne fonctionne plus. Les dossiers sont bien créés là où je l'indique mais les permissions ne sont pas modifiées !!!!

    Faut-il placer le chemin Ldap des utilisateurs dans la commande ? Ce n'est pourtant pas ce qui est indiqué dans la doc que j'ai pu trouver sur Xcacls.vbs.

    Si quelqu'un a une idée sur ce qu'il faut modifier ? Merci d'avance, Rb

     

    lundi 8 septembre 2008 14:52