Bonjour,
Voici un script qui me permet d'appliquer des ACL à toute une arborescence Windows.
NOM DU CLIENT
├───01 CONTRATS
│ ├───AX
│ ├───Contrat
│ ├───Contrat PDF
│ └───OLD
├───02 OFFRES
│ └───AX
├───03 SUIVI
│ ├───01 COURRIER
│ ├───02 PRESENTATION
│ └───03 RAPPORT VISITE
├───04 TECHNIQUE
│ ├───DEVELOPPEMENT
│ ├───ISERIES STORAGE
│ ├───MOBILITE MESSAGERIE
│ ├───OPERATION
│ ├───PROJETS
│ ├───SECURITE TELECOM
│ └───SYSTEMES DISTRIBUES
Cette structure ce répète un millier de fois, il n’y a que le nom du client qui change.
Tous les sous-répertoires ont des droits différents et ne peuvent pas hériter des répertoires parents.
Ce script fonctionne mais comme je crée un fichier a chaque fois c’est un peu lent.
J’ai essayé de mettre dans le RunAs directement les commandes a passer, ce qui éviterait de créer le fichier, sans succès…….
Est-ce que vous pourriez m’aider ?
Merci beaucoup.
Le script :
► Afficher le texte
Code : Tout sélectionner
; Paulo Da Silva
; 23.03.2010
#Include <File.au3>
#Include <Array.au3>
#include <Process.au3>
; Utilisateur Admin
Local $sUserName = "Admin User"
; mot de passe admin
Local $sPassword = "Password Admin"
; Domiane
Local $domain = "Domiane"
const $Dir = "\\xxx\xxx\Pxxx\xxxxx\"
; Tableau avec tous les repertoires racine
$avCommon = _FileListToArray("\\xxx\xxx\Pxxx\xxxxx\", "*", 2)
FOR $element IN $avCommon
; efface le fichier
FileRecycle("setACls.cmd")
; cree un nouveau fichier setACls.cmd
$file = FileOpen("setACls.cmd", 1)
; Test si le fichier peut etre ouvert
If $file = -1 Then
MsgBox(0, "Error", "Erreur sur le fichier setACls.cmd")
Exit
EndIf
FileWrite($file, "icacls.exe ")
FileWrite($file, """")
FileWrite($file,$Dir)
FileWrite($file, $element )
FileWrite($file, """")
FileWrite($file, " /restore AclFile")
FileWrite($file,@CRLF)
$FClose =FileClose($file)
Sleep(1000)
RunAs($sUserName, $domain, $sPassword, 2, "setACls.cmd " ,@ScriptDir,@SW_MAXIMIZE )
NEXT