Meilleur auteur de réponses
Récupérer droits fichiers sur chemin UNC

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 parcourirSet 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.FilesstrFileName = 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 ifNext
For Each objSubFolder In objFolder.SubFolders
ListFiles(objSubFolder )
Next
End Sublundi 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
- Modifié Thierry DEMAN-BARCELÒMVP lundi 3 septembre 2012 17:31 Ajout PS
- Marqué comme réponse Dan BajenaruMicrosoft employee lundi 10 septembre 2012 08:27
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
- Modifié Thierry DEMAN-BARCELÒMVP lundi 3 septembre 2012 17:31 Ajout PS
- Marqué comme réponse Dan BajenaruMicrosoft employee lundi 10 septembre 2012 08:27
lundi 3 septembre 2012 17:23 -
Bonjour,
Merci de nous tenir au courant sur la suite de vos démarches.
Cordialement,
Dan
Dan BAJENARU, MSFT Votez! Appel à la contribution
Nous vous prions de considérer que dans le cadre de ce forum on n’offre pas de support technique et aucune garantie de la part de Microsoft ne peut être offerte.jeudi 6 septembre 2012 14:40