locked
Récupérer droits fichiers sur chemin UNC RRS feed

  • Question

  • Bonjour,

    J'arrive à  récupérer parfaitement des droits sur des fichiers en local mais cela ne fonctionne pas avec un chemin UNC. Pourriez-vous me donner la solution pour faire fonctionner ce script en réseau. En fait je cherche à savoir les fichiers sur lesquels l'administrateur du domaine n'a aucun pouvoir. Cordialement.

    Voici mon script.

    'On déclare nos variables

    Dim strFile
    Dim objShell
    Dim objShellstat
    Dim objShellowner
    Dim objFso
    Dim objmyfolder
    Dim objfile
    Dim strfilename
    Dim strfilename2
    Dim objsubfolder
    'On indique ici le nom du répertoire que l'on souhaite parcourir

    Set objFso = CreateObject("Scripting.FileSystemObject")
    Set objMyFolder = objFso.GetFolder("C:\Users\benjamin cornet\Desktop\test\")

    ListFiles objMyFolder

    'Fonction qui liste tous les fichiers dans tous les sous répertoires

    Sub ListFiles(objFolder)
      For Each objFile In objFolder.Files

     strFileName = objFile.Path
     strFileName2 =  """" & objFile.Path  & """"
     wscript.echo strFileName2
     
     on error resume next
     Set objWMIService = GetObject("winmgmts:")
     Set objFileSecuritySettings = _
     objWMIService.Get("Win32_LogicalFileSecuritySetting='" & objFile.Path & "'")
     intRetVal = objFileSecuritySettings.GetSecurityDescriptor(objSD)

     if err.number <> 0 then
      wscript.echo "accès refusé"
      Set objShellowner = CreateObject("Wscript.Shell")
      objShellowner.Run("cmd /c takeown /F " & strFileName2 & " >> c:\logs-vbs\fichiers-reset-proprietaire.txt")
      wscript.sleep 3000
      Set objShellstat2 = CreateObject("Wscript.Shell")
          objShellstat2.Run("cmd /c icacls " & strFileName2 & " /reset /c >> c:\logs-vbs\fichiers-reset-acces-refuse.txt")
      
     end if

      Next
      For Each objSubFolder In objFolder.SubFolders
        ListFiles(objSubFolder )
      Next
    End Sub

    lundi 3 septembre 2012 11:43

Réponses

  • Bonsoir,

    attention, l'approche n'est peut être pas forcément la bonne...

    Lorsque le mode ABE est positionné, les dossiers (ou fichiers) sur lesquels le compte utilisé (même l'administrateur) n'a pas de droits, ne sont pas affichés!!!

    Dans ce cadre là, il vaut mieux lancer la commande à partir de chaque serveur à valider (par exemple en utilisant les tâches planifiées). La méthode utilisée consiste souvent à demander une simple liste des dossiers, et mettre de côté tous les dossiers indiqués en erreur d'accès afin de corriger au cas par cas le problème.

    Dans le temps, j'avais fait un script qui mémorisait l'ancien propriétaire, affectait le compte souhaité, réalisait le traitement souhaité, puis remettait l'ancien propriétaire. Pour réaliser tout cela, il FAUT avoir un compte disposant déjà de l'accès à la liste des droits existants afin de ne pas "casser" les droits existants. L'opération n'est donc pas si simple...

    A bientôt,

    PS: A noter que les commandes utilisées (ICACLS,...) fonctionnent très bien par ailleurs sur les partages réseau.


    Thierry DEMAN. Exchange MVP. https://mvp.support.microsoft.com/profile=CE2B565B-B13D-4C24-B04D-F0D5766D14A1 http://www.faqexchange.info


    lundi 3 septembre 2012 17:23

Toutes les réponses

  • Bonsoir,

    attention, l'approche n'est peut être pas forcément la bonne...

    Lorsque le mode ABE est positionné, les dossiers (ou fichiers) sur lesquels le compte utilisé (même l'administrateur) n'a pas de droits, ne sont pas affichés!!!

    Dans ce cadre là, il vaut mieux lancer la commande à partir de chaque serveur à valider (par exemple en utilisant les tâches planifiées). La méthode utilisée consiste souvent à demander une simple liste des dossiers, et mettre de côté tous les dossiers indiqués en erreur d'accès afin de corriger au cas par cas le problème.

    Dans le temps, j'avais fait un script qui mémorisait l'ancien propriétaire, affectait le compte souhaité, réalisait le traitement souhaité, puis remettait l'ancien propriétaire. Pour réaliser tout cela, il FAUT avoir un compte disposant déjà de l'accès à la liste des droits existants afin de ne pas "casser" les droits existants. L'opération n'est donc pas si simple...

    A bientôt,

    PS: A noter que les commandes utilisées (ICACLS,...) fonctionnent très bien par ailleurs sur les partages réseau.


    Thierry DEMAN. Exchange MVP. https://mvp.support.microsoft.com/profile=CE2B565B-B13D-4C24-B04D-F0D5766D14A1 http://www.faqexchange.info


    lundi 3 septembre 2012 17:23